Javascript 谷歌地图API v3中的停止空闲事件

Javascript 谷歌地图API v3中的停止空闲事件,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在使用一个带有标记设置的谷歌地图来显示地图上的位置。我使用idle事件来确定何时提交新数据请求,这样当用户平移或缩放地图时,将调用ajax服务,并更新标记以在新视口中查找位置 问题是,当用户单击一个标记以弹出信息窗口时,地图通常会稍微移动到信息窗口的中心——这会触发另一个idle事件并重置地图,关闭信息窗口 这方面有最佳实践吗?有没有办法在打开信息窗口时禁用空闲的监听器,或者有标准的解决方法?我的谷歌地图也有类似的问题,这里是我的解决方法 在调用标记时,我下载了视口以外的点。例如 如果我的北

我正在使用一个带有标记设置的谷歌地图来显示地图上的位置。我使用
idle
事件来确定何时提交新数据请求,这样当用户平移或缩放地图时,将调用ajax服务,并更新标记以在新视口中查找位置

问题是,当用户单击一个标记以弹出信息窗口时,地图通常会稍微移动到信息窗口的中心——这会触发另一个
idle
事件并重置地图,关闭信息窗口


这方面有最佳实践吗?有没有办法在打开信息窗口时禁用空闲的监听器,或者有标准的解决方法?

我的谷歌地图也有类似的问题,这里是我的解决方法

在调用标记时,我下载了视口以外的点。例如 如果我的北界纬度是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();
      }
});
map.addListener(“空闲”,函数(){
//获取地图视口边界
.....
//检查你是否在没有标记的区域
如果(视口nsearchBoundS | |){
刷新标记();
}
});
这应该能解决你的问题。它告诉脚本仅在大移动后刷新标记。
为了安全起见,我让我的地图从两倍于视口的区域中提取标记。它还可以防止您的数据从小盘中刷新,这将减少对服务器的请求数量。

我也遇到了同样的问题,因为我在前端开发方面没有太多经验,所以我尝试启用实际搜索和填充标记,如果事件来自用户交互,如“拖动”或“缩放更改”事件

起初,我寻找一种方法来确定idle事件中是否有任何内置属性或标志,但实际上没有。然后我为自己做了一个


由于这些事件在“空闲”事件之前触发,我在这些事件中设置了一个标志(我知道这不是最佳做法),在“空闲”事件中,我检查了“isUserInteraction”标志是否为真,填充标记的过程将起作用

尝试使用信息窗口选项
disableAutoPan:true
:在打开时禁用自动平移。默认情况下,“信息”窗口将平移地图,使其在打开时完全可见。@AntoJurković——谢谢——这是一个好主意,但用户很可能会亲自平移地图以查看整个信息窗口,因此问题会重复出现。我想如果信息窗口打开,我需要某种方法来禁用
idle
事件,或者类似的解决方法。