【问题标题】:Google Maps & javascript how to dynamically update (re-display) custom map tiles?Google Maps & javascript 如何动态更新(重新显示)自定义地图图块?
【发布时间】:2011-10-19 13:47:07
【问题描述】:

我有一个数据库,其中存储了数千个(纬度、经度)点。使用瓦片服务器将这些点绘制到地图中。这种瓦片服务器首先为每个瓦片计算落在瓦片内的点,然后绘制每个点(坐标转换后)。我的 Javascript 如下所示:

var overlayMaps = [{
  getTileUrl: function(coord, zoom) {
    return "tileserver.php?x="+coord.x+"&y="+coord.y+"&z="+zoom+"&g=1";
  },

  tileSize: new google.maps.Size(256, 256),
  isPng: true,
  opacity: 1.0
}];

var overlayMap = new google.maps.ImageMapType(overlayMaps[0]);
map.overlayMapTypes.setAt(0,overlayMap);

现在,我每 5 秒动态地将新记录添加到数据库中,并且我希望每 5 秒更新(重新计算和重新显示)相应的图块。

如何触发我的图块服务器每 5 秒重新计算视口的图块?

添加:瓷砖每 5 秒更新一次,没有问题,但现在的主要问题是在地图上重新显示它们......

提前谢谢...

【问题讨论】:

  • 谢谢!我尝试使用当前时间而不是随机数(如您所说的 r),它起作用了!

标签: google-maps dynamic overlay tiles


【解决方案1】:

图块是图像,您不可能知道其中哪一个会发生变化。此外,您不能刷新单个图块,而是整个视口。您可以做的就是动态地提供图块,每次视口更改或不更新图像未缓存,因此它们总是会发生变化。为此,您可以像这样将时间标志或随机数放入您的磁贴 url 代码中。

"tileserver.php?x="+coord.x+"&y="+coord.y+"&z="+zoom+"&g=1&r=" + Math.random(); 

最好的问候

【讨论】:

  • 虽然有这样的参数是一个不错的选择,但重新加载时瓷砖会闪烁片刻。想要避免这种情况的人请访问以下链接:groups.google.com/forum/#!topic/google-maps-js-api-v3/…
  • 改变不透明度直到瓦片变得不可见,然后释放瓦片,然后重新加载它看起来更好。我也会尝试这种方法。谢谢分享大卫
猜你喜欢
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多