无论如何,限制更新谷歌地图时平移
Anyway to restrict updating a google map when panning
我有一个谷歌地图设置与指针。我已经设置好了,所以每当缩放或视口发生变化时它都会相应地加载一组新的指针:
google.maps.event.addListener(xmap, 'zoom_changed', function(event){
tm.update();
});
google.maps.event.addListener(xmap, 'bounds_changed', function(event){
tm.update();
});
google.maps.event.addListenerOnce(xmap, 'tilesloaded', function(){
tm.update();
});
我还设置了它,以便单击任何指针都会打开一个信息框,该信息框将填充来自ajax查询的数据。问题是,我需要设置它,所以如果我们说一个指针是远边缘的视图端口,它应该平移到中心或位置,当信息窗口打开时,它可以在整个端口查看。
问题是,有时信息窗口加载时可能对视图端口太大,导致地图平移,进而触发更新函数重新填充指针。
所以你可以做的是用布尔标志来指示是否调用tm.update()。在单击标记(打开信息窗口)的事件处理程序中,将其设置为false。然后在bounds_changed事件处理程序中,只调用tm。更新该布尔值是否为真。然后也许在bounds_changed结束时,将其重置为true。
另一种猜测-不删除和覆盖已经可见的标记(落入map.getBounds())。当您收到要添加新标记的响应时,如果还没有,请进行验证。
更新:在bounds_changed之后,你有了新的边界。然后查询服务器并获得所需的标记线和其他相关数据。在地图上添加标记时,保存对它们的引用,例如以散列形式保存。如果你有独特的id,那就再好不过了。在另一种情况下,为标记发明某种标识符。然后我们需要添加新的标记,并可能删除其中一些,这是隐藏的。这样的:
// somewhere initially
var markersOnMap = {}
// when got data and adding new markers
markersData = array of markers you've received from request
for (var i=0; i < markersData.length; i++)
{
var datum = markersData[i];
if (typeof(markersOnMap[datum.id]) == 'undefined')
{
// add marker to map
var marker = new google.maps.Marker({
position: ...,
etc.
});
marker.setMap(mymap);
markersOnMap[datum.id] = marker;
}
}
// you may clean up hidden markers or
// leave it for future or what you want.
// suppose we delete out of view markers
for (var id in markersOnMap)
{
if (!mymap.getBounds().contains(markersOnMap[id].getPosition()))
{
// get rid of it
markersOnMap[id].setMap(null);
delete markersOnMap[id];
}
}
相关文章:
- 标记的实时更新,无需加载页面谷歌地图API V3
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记
- 角度指令是't更新谷歌地图值
- 棱角分明的谷歌地图没有更新标记
- 更新打开的谷歌地图信息窗口
- 在谷歌地图 API v3 中获取更新的半径/面积
- 谷歌地图在angularjs中懒惰加载动态地理坐标更新
- 如何在谷歌地图javascript中在地图上拖动标记(可拖动方向)时显示更新的坐标
- 在谷歌地图上显示用户当前位置并更新
- 用sql数据库更新谷歌地图标记
- 使用PhoneGap和谷歌地图插件更新位置跟踪的标记位置
- 模型没有在谷歌地图监听器-angularjs中更新
- 仅更新谷歌地图中的标记
- 在不加载页面的情况下更新谷歌地图上的标记位置
- 如何使用谷歌地图API v3更新已经创建的地图
- 谷歌地图:更新图像覆盖
- 使用codeigniter、Ajax、Javascript、Php从谷歌地图更新标记
- 谷歌地图更新标记位置而不删除它们
- 谷歌地图更新标记从改变mysql坐标
- 有没有办法控制谷歌地图更新你位置的频率?