1

我在谷歌地图上放置了一个覆盖热图。更具体地说,我正在使用这个插件: 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); }

我会很感激你的见解,因为我现在已经浪费了太多时间来解决这个问题......

非常感谢,真的很感激!

4

1 回答 1

0

对于上述情况,不要介意。

我意识到谷歌有自己的热图库,我转换了我的代码来使用它。效果很好!

https://developers.google.com/maps/documentation/javascript/layers#JSHeatMaps

于 2013-08-08T17:03:21.133 回答