更新热力图数据,简单的谷歌热力图

8
我已经开发了这个安卓应用程序来收集经度、纬度和手机信号,作为我的课程项目。我的目标是将此信息传输到一个简单的热力图网页上。我的问题是,在这个例子中,更新我的热力图数据变量的最佳方法是什么?

https://google-developers.appspot.com/maps/documentation/javascript/examples/layer-heatmap

特别是这个变量:

      var taxiData = [
          new google.maps.LatLng(37.782551, -122.445368),
          new google.maps.LatLng(37.782745, -122.444586), ...
          ];

我愿意听取所有建议,我在网站开发方面基本上是个新手。

1个回答

27

谷歌地图非常直观易用。您可能会在本示例的后面注意到,taxiData 被加载到特定的谷歌数组中 -

 pointArray = new google.maps.MVCArray(taxiData);

然后将这些数据制作成热力图,如下:

heatmap = new google.maps.visualization.HeatmapLayer({
    data: pointArray
});
heatmap.setMap(map);

MVCArray可以进行更新,地图将自动更新。因此,如果您需要向热力图中添加新的LatLng,请简单地执行以下操作:

使用MVCArray的push()方法向数组末尾添加新的坐标:

var newCoord = new google.maps.LatLng(lat, lng);
myMVCArray.push(newCoord);

其中myMVCArray是您已经用于创建热力图的MVCArray对象。

pointArray.push(new LatLng(<coordinates>));

地图将会更新。


谢谢,我没想到MVC数组是这样工作的!这指引我朝着正确的方向前进,我想我会做更多的JS教程,因为我今天才刚开始学习它。 - Yonahs
更改热力图中现有点的权重或latlon属性是否也可能?为了实现动画效果,我希望热力图的变化尽可能流畅。目前,我通过将地图设置为null并将具有所有新数据的图层设置为地图来清除热力图层,但这会导致在短时间内看不到任何热力图点。 - Daniel van Dommele
@DanielvanDommele 一个 LatLng 无法更新,您必须替换您正在操作的任何数据。使用以下代码仍然相对容易:如果您有一个变量 oldLatLng,您要用 newLatLng 替换它,则执行此操作的代码为 pointArray.setAt(pointArray.indexOf(oldLatLng), newLatLng)。我无法确定这是否适用于您的情况,如果您想更全面地审查您的问题,您应该打开一个新问题。 - Bubbles
嗯,我不认为在我的情况下这会有太大的改善……但我会尝试一下。谢谢你的回复! - Daniel van Dommele
非常感谢。这正是我所需要的。 - FONGOH MARTIN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接