我在谷歌地图上放置了一个覆盖热图。更具体地说,我正在使用这个插件: http: //www.patrick-wied.at/static/heatmapjs/example-heatmap-googlemaps.html
现在,我的实现与演示略有不同,因为每次发生变化时我都会更新地图,因此
google.maps.event.addListenerOnce(map, 'idle', function(event){ updateHeatMap();});
变成:
google.maps.event.addListener(map, 'idle', function(event){ updateHeatMap();});
虽然缩放和平移应该刷新,但我注意到每当我拖动地图时,覆盖“颜色”移动的距离是地图移动距离的两倍。另一方面,缩放效果很好,因此放大和缩小可以再次校正位置。
仅当idle
触发事件时刷新数据时才会发生这种情况。该演示工作正常,因为它只加载一次地图,与我的实现不同。
我怀疑以下代码有问题,但我没有设法检测到实际问题。
HeatmapOverlay.prototype.setDataSet = function(data){
var me = this, currentBounds = me.map.getBounds(), mapdata = { max: data.max, data: [] }, d = data.data, dlen = d.length, projection = me.getProjection(), latlng, point;
我.latlgs = [];
while(dlen--){ latlng = new google.maps.LatLng(d[dlen].lat, d[dlen].lng); if(!currentBounds.contains(latlng)) { continue; } me.latlngs.push({latlng: latlng, c: d[dlen].count}); point = me.pixelTransform(projection.fromLatLngToContainerPixel(latlng)); mapdata.data.push({x: point.x, y: point.y, count: d[dlen].count}); } me.heatmap.clear(); me.heatmap.store.setDataSet(mapdata); }
我会很感激你的见解,因为我现在已经浪费了太多时间来解决这个问题......
非常感谢,真的很感激!