我的数据库中有很多地址我想将Google地图添加为标记。我只想加载并添加地图上所选区域中的标记。如果地图已缩放或拖动,则应更新地图上的标记。 我该怎么做?
非常感谢!
答案 0 :(得分:0)
正如Aristos所说,标记将在聚焦时自动显示。但是,如果我有大量的联系人,那么只有在需要时才能更容易地做到这一点。
我的策略是:
跟踪您添加的地址 - 没有必要再做两次。
从地址中获取LatLng。
获取地图的当前边界(使用getBounds()获取当前显示的地图的最小/最大LatLng)
检查地址的LatLng是否在边界内。
如果是,请添加标记。
循环
如果你真的有很多地址,你可能想要预取LatLng并将其存储在SQL表中。然后,您可以使用间隔查询表。
HTH
编辑:一些代码。假设你有一个Array()标记,以及Northwest和Southeast边界,你可以这样做:
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;
}
答案 1 :(得分:0)
对于管理大量标记,您肯定希望利用已经构建的基础结构来执行此操作。谷歌开发者博客上有一篇很棒的帖子讨论了流行的选项。
https://developers.google.com/maps/articles/toomanymarkers
Marker Clusterer是一个非常常见的组件,我在地图应用程序中看到了所有这些组件,并且似乎符合您要求的要求。我还要看一下Fusion Tables,因为它可以构建一个包含数千个位置的地图非常简单。