在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

上一篇: stop idle event in Google Maps API v3

下一篇: trigger google maps marker click