stop idle event in Google Maps API v3
我正在使用带有标记设置的Google地图来显示地图上的位置。 我正在使用
问题在于,当用户点击标记以弹出信息窗时,地图通常会略微移动到信息窗口的中心 - 这会触发另一个
这是最好的做法吗? 有没有办法在打开infowindow时禁用
我遇到了同样的问题,因为我没有太多的前端开发经验,我试图启用实际搜索和填充标记,如果只有事件来自用户交互,如'drag'或'zoom-changed'事件。
起初我找了一种方法来找出是否有任何内置属性或标志在空闲事件中,它是没有。然后我为自己做了一个。
因为这些事件在'idle'事件之前触发了我在这些事件中设置了一个标志(我知道这不是最佳实践)并且在'idle'事件中我检查'isUserInteraction'标志是否为true,填充标记的过程将起作用。
我与googleMaps有类似的问题,这是我的解决方法....
在我打电话给Markers的过程中,我在视口之外下载了点数。例如....
如果我的N绑定纬度为85且我的S界限为88,我会在83到90纬度之间拉点。
1 2 3 4 | viewportN = 85; viewportS = 88; searchBoundN = 83; searchBoundS = 90; |
当你点击标记时,它会自动平移你,你的Northbound现在是84.你在空闲函数中放了一个if语句:
1 2 3 4 5 6 7 8 | 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(); } }); |
这应该可以解决您的问题。它告诉您的脚本仅在大幅移动后刷新标记。
为了安全起见,我的地图从视口区域的两倍处拉出标记。它还可以防止数据从次要平底锅中刷新,这将减少对服务器的请求数量。