在Google Maps API v3中停止空闲事件
我正在使用带有标记设置的Google地图来显示地图上的位置。 我正在使用idle
事件来确定何时提交新数据请求,以便用户平移或缩放地图时,将调用ajax服务并更新标记以在新视口中查找位置。
问题在于,当用户点击标记弹出infowindow时,地图往往略微移动以使infowindow居中 - 触发另一个idle
事件并重置地图,关闭infowindow。
对此有最佳做法吗? 有一种方法可以在infowindow打开时禁用idle
侦听器,或者是否有标准的解决方法?
我与我的googleMaps有类似的问题,这里是我的解决方法....
在我打电话给标记的过程中,我下载了视点之外的点。 例如....如果我的N界纬度为85,而我的界限为88,我会在83和90纬度之间拉分。
viewportN = 85;
viewportS = 88;
searchBoundN = 83;
searchBoundS = 90;
当你点击标记时,它会自动平移你,以便你的北行现在是84.你在你的空闲函数中放入一个if语句,它说:
map.addListener("idle", function () {
//get map viewport bounds
.....
// check if you're in territory that doesn't have markers
if (viewPortN < searchBoundN || viewportS > searchBoundS || <<repeat for E, W>>) {
refreshMarkers();
}
});
这应该可以解决你的问题。 它会告诉您的脚本只在大动作后刷新标记。 我有我的地图从视口区域的两倍拉出标记,以保证安全。 它还使您的数据免受小盘的刷新,这将降低对服务器的请求数量。
我有同样的问题,因为我没有太多的前端开发经验,我试图启用实际的搜索和填充标记,只要事件来自用户交互,如“拖动”或“缩放更改”事件。
起初,我寻找一种方法来查明在闲置事件中是否有内置财产或标志,而且没有。 然后我为自己做了一个。
因为这些事件在'空闲'事件发生之前就会触发,所以我在这些事件中设置了一个标志(我知道这不是最佳做法),而在'空闲'事件中,我检查'isUserInteraction'标志是否为真,填充标志的过程将起作用。
链接地址: http://www.djcxy.com/p/81549.html