使用 AJAX 动态更新谷歌地图
Dynamicaly update Google maps with AJAX
我的数据库中有很多地址,我想作为标记添加到谷歌地图中。我只想加载和添加地图上选定区域中的标记。如果缩放或拖动地图,则应更新地图上的标记。我该怎么做?
提前非常感谢!
为了管理大量标记,您肯定希望利用已经构建的基础设施来执行此操作。 实际上,Google开发人员博客上有一篇很棒的文章,讨论了流行的选项。
https://developers.google.com/maps/articles/toomanymarkers
标记聚类器是一个非常常见的组件,我在地图应用程序方面到处都能看到,并且似乎符合您正在寻找的要求。我还会看看Fusion Tables,因为它使构建具有数千个位置的地图变得非常简单。
正如阿里斯托斯所说,标记将在对焦时自动显示。但是,如果我有无数的联系人,那么仅在需要时才能做到这一点确实会更容易。
我的策略是:
-
跟踪您添加的地址 - 没有必要做两次。
-
从地址中,获取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;
}
相关文章:
- 标记的实时更新,无需加载页面谷歌地图API V3
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- 角度指令是't更新谷歌地图值
- 棱角分明的谷歌地图没有更新标记
- 更新打开的谷歌地图信息窗口
- 在谷歌地图 API v3 中获取更新的半径/面积
- 谷歌地图在angularjs中懒惰加载动态地理坐标更新
- 如何在谷歌地图javascript中在地图上拖动标记(可拖动方向)时显示更新的坐标
- 在谷歌地图上显示用户当前位置并更新
- 用sql数据库更新谷歌地图标记
- 使用PhoneGap和谷歌地图插件更新位置跟踪的标记位置
- 模型没有在谷歌地图监听器-angularjs中更新
- 仅更新谷歌地图中的标记
- 在不加载页面的情况下更新谷歌地图上的标记位置
- 如何使用谷歌地图API v3更新已经创建的地图
- 谷歌地图:更新图像覆盖
- 使用codeigniter、Ajax、Javascript、Php从谷歌地图更新标记
- 谷歌地图更新标记位置而不删除它们
- 谷歌地图更新标记从改变mysql坐标
- 有没有办法控制谷歌地图更新你位置的频率?