MCPcopy
hub / github.com/apache/echarts / _renderOnGeo

Method _renderOnGeo

src/chart/heatmap/HeatmapView.ts:351–425  ·  view source on GitHub ↗
(
        geo: GeoLikeCoordSys,
        seriesModel: HeatmapSeriesModel,
        visualMapModel: VisualMapModel,
        api: ExtensionAPI
    )

Source from the content-addressed store, hash-verified

349 }
350
351 _renderOnGeo(
352 geo: GeoLikeCoordSys,
353 seriesModel: HeatmapSeriesModel,
354 visualMapModel: VisualMapModel,
355 api: ExtensionAPI
356 ) {
357 const inRangeVisuals = visualMapModel.targetVisuals.inRange;
358 const outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;
359 // if (!visualMapping) {
360 // throw new Error('Data range must have color visuals');
361 // }
362
363 const data = seriesModel.getData();
364 const hmLayer = this._hmLayer || (this._hmLayer || new HeatmapLayer());
365 hmLayer.blurSize = seriesModel.get('blurSize');
366 hmLayer.pointSize = seriesModel.get('pointSize');
367 hmLayer.minOpacity = seriesModel.get('minOpacity');
368 hmLayer.maxOpacity = seriesModel.get('maxOpacity');
369
370 const rect = geo.getViewRect().clone();
371 const roamTransform = geo.getRoamTransform();
372 rect.applyTransform(roamTransform);
373
374 // Clamp on viewport
375 const x = Math.max(rect.x, 0);
376 const y = Math.max(rect.y, 0);
377 const x2 = Math.min(rect.width + rect.x, api.getWidth());
378 const y2 = Math.min(rect.height + rect.y, api.getHeight());
379 const width = x2 - x;
380 const height = y2 - y;
381
382 const dims = [
383 data.mapDimension('lng'),
384 data.mapDimension('lat'),
385 data.mapDimension('value')
386 ];
387
388 const points = data.mapArray(dims, function (lng: number, lat: number, value: number) {
389 const pt = geo.dataToPoint([lng, lat]);
390 pt[0] -= x;
391 pt[1] -= y;
392 pt.push(value);
393 return pt;
394 });
395
396 const dataExtent = visualMapModel.getExtent();
397 const isInRange = visualMapModel.type === 'visualMap.continuous'
398 ? getIsInContinuousRange(dataExtent, (visualMapModel as ContinuousModel).option.range)
399 : getIsInPiecewiseRange(
400 dataExtent,
401 (visualMapModel as PiecewiseModel).getPieceList(),
402 (visualMapModel as PiecewiseModel).option.selected
403 );
404
405 hmLayer.update(
406 points, width, height,
407 inRangeVisuals.color.getNormalizer(),
408 {

Callers 1

renderMethod · 0.95

Calls 15

getIsInContinuousRangeFunction · 0.85
getIsInPiecewiseRangeFunction · 0.85
mapDimensionMethod · 0.80
mapArrayMethod · 0.80
getPieceListMethod · 0.80
getNormalizerMethod · 0.80
getDataMethod · 0.65
getWidthMethod · 0.65
getHeightMethod · 0.65
dataToPointMethod · 0.65
getExtentMethod · 0.65
updateMethod · 0.65

Tested by

no test coverage detected