我有一个谷歌地图应用程序,用户可以执行标记搜索。 搜索具有当前mapBounds,因此我只能在当前视图中搜索。但是,如果我在当前视图中没有任何结果 - 我正在尝试在距离地图中心100公里范围内进行搜索。
如果我在100公里范围内找到位置,我想缩小地图以显示我找到的位置。
在服务器上,我浏览了所有位置并获得了sw和ne点。所以基本上在我的ajax响应中我可以直接创建latLngBounds(无需遍历标记位置并扩展边界)。
问题是每当我尝试做map.fitBounds(mynewbounds);什么都没发生。地图保持原样。
似乎由于地图的中心是新边界的中心,因此地图不想移动。如果我执行map.pantobounds,那么地图将移动到边界的西北角。
根据文档预计pantoBounds的行为: https://developers.google.com/maps/documentation/javascript/reference
If the bounds is larger than the map, the map will be shifted to include the northwest corner of the bounds
如何使地图缩小以包含新边界?
答案 0 :(得分:3)
好的,我只知道发生了什么。在我设置边界之前,我试图删除我的zoom_out和dragend事件。不幸的是我选择使用clearListeners事件,它删除了地图上设置的所有事件(即使是我没有设置的事件)。所以似乎fitBounds问题是zoom_changed事件,但是地图没有响应它,因为所有的侦听器都被删除了。
使用removeListener(listenerInstance)删除正确的事件后,fitBounds函数开始按预期运行。
所以就像对其他人一样警告!如果您不知道自己在做什么,请不要使用clearListeners。它会删除分配给地图对象的所有事件,这可能会导致令人讨厌的行为!