0

我的数据库中有很多地址,我想将它们作为标记添加到 Google 地图中。我只想加载和添加地图上选定区域中的标记。如果地图被缩放或拖动,它应该更新地图上的标记。我怎么做?

首先十分感谢!

4

2 回答 2

0

正如 Aristos 所说,标记将在对焦时自动显示。但是,如果我有无数的联系人,那么只有在需要时才这样做确实会更容易。

我的策略是:

  • 跟踪您添加的地址 - 没有必要重复两次。

  • 从地址中,获取 LatLng。

  • 获取地图的当前边界(使用 getBounds() 获取当前显示的地图的最小/最大 LatLng)

  • 检查地址的 LatLng 是否在边界内。

  • 如果是,请添加标记。

环形

如果您确实有很多地址,您可能需要预取 LatLng 并将其存储在 SQL 表中。然后,您可以使用间隔查询表。

高温高压

编辑:一些代码。假设您有一个 Array() 标记,以及西北和东南边界,您可以这样做:

function filterMarkers(nw, se, myMarkers) {
  var north=nw.lat();
  var west=nw.lng();
  var south=se.lat();
  var east=se.lng();
  var isInsideBounds=[];
  for (var i in myMarkers) {
    if(myMarkers[i].position.lat()>=north && myMarkers[i].position.lat()=<south && myMarkers[i].position.lng()>=west && myMarkers[i].position.lng()=<east) {
      isInsideBounds.push(myMarkers[i]);
    }
  }
  return isInsideBounds;
}
于 2012-05-18T20:50:11.133 回答
0

为了管理大量标记,您肯定希望利用已经构建的基础设施来执行此操作。实际上,Google Developers 博客上有一篇很棒的文章讨论了流行的选项。

https://developers.google.com/maps/articles/toomanymarkers

Marker Clusterer 是一个非常常见的组件,当涉及到地图应用程序时,我到处都能看到它,并且似乎符合您正在寻找的要求。我还会看看 Fusion Tables,因为它使构建包含数千个位置的地图变得非常简单。

于 2012-05-18T21:41:38.077 回答