gpt4 book ai didi

javascript - 除非使用 leaflet 和 heatmap.js 更改缩放比例,否则不会重绘 Canvas

转载 作者:行者123 更新时间:2023-11-30 17:59:35 25 4
gpt4 key购买 nike

我使用 heatmap.js 的应用程序中有一个奇怪的错误插件,我不确定问题是否出在我的代码中,在 leaflet 中,或在插件中。

我正在动态创建新的热图。所以我想删除旧的并跟踪一个新的,这应该是 heatmpa.js 的默认行为。令人惊讶的是,在我缩小或放大之前,它不会删除旧的。

这里有一些图片来理解发生了什么:

第 1 步:点击按钮绘制巴黎周围的热图: heatmapidf

结果:正如预期的那样,巴黎周围的热图。

第 2 步:点击一个按钮在东部绘制热图: heatmpap2结果:添加了第二个热图,但没有删除巴黎周围的热图。 (错误)

第 3 步:点击加号图标放大 map heatmapne结果:按预期缩放,巴黎周围的热图消失。

这里是heatmap-leaflet的setData函数的代码,它替换数据并调用重绘:

 setData: function ( dataset )
{
var self = this;
var latLngs = [];
this._maxValue = 0;
dataset.forEach( function ( d )
{
latLngs.push( new L.LatLng( d.lat, d.lon ) );
self._maxValue = Math.max( self._maxValue, d.value );
} );
this._bounds = new L.LatLngBounds( latLngs );

this._quad = new QuadTree( this._boundsToQuery( this._bounds ), false, 6, 6 );

dataset.forEach( function ( d )
{
self._quad.insert( {
x: d.lon,
y: d.lat,
value: d.value
} );
} );

this.redraw();
}

我的问题

如果有任何关于如何定位问题的建议,我将不胜感激。解决方案会更好。

最佳答案

问题是插件的作者需要重新设置tile层然后再更新。我不清楚为什么重绘功能在 Leaflet 中没有这样做,并怀疑它可能是 Leaflet 中的一个错误。我能够重现您的问题,您现在可以做的就是自己重置和更新图层。设置新数据后,只需执行以下操作:

heatmapLayer.setData(Your data);
heatmapLayer._reset();
heatmapLayer._update();

关于javascript - 除非使用 leaflet 和 heatmap.js 更改缩放比例,否则不会重绘 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17361232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com