特定标记上的中心地图和其他标记上的 fitToBounds
Posted
技术标签:
【中文标题】特定标记上的中心地图和其他标记上的 fitToBounds【英文标题】:Center map on specific marker and fitToBounds on other markers 【发布时间】:2013-12-19 04:05:27 【问题描述】:我有一张带有几个标记的地图,其中一个是“主要”,应该位于地图的中心。我想要实现的是
-
在地图中心放置“Major”标记。
以最佳缩放级别显示所有其他标记。
Fittobounds 将使地图居中而不考虑“主要”标记。无论如何我可以同时实现#1 和#2 吗?
【问题讨论】:
【参考方案1】:-
使用 .extend 将所有标记添加到空的 google.maps.LatLngBounds 对象
在结果边界上调用 google.maps.Map.fitBounds(将居中并缩放地图以显示所有标记)
一旦边界发生变化(在 bounds_changed 事件监听器中),将地图置于“主要”标记的中心
一旦边界第二次改变(在 bounds_changed 事件监听器中),获取视口的更新边界 (google.maps.getBounds)(检查是否有任何标记移出可见地图)李>
遍历所有标记,如果任何标记的 bounds.contains(markers[i].getPosition()) 为 false,则将边界减小 1(缩小一次)。
【讨论】:
试过了。有几个问题: 1. 如果从 bounds_changed 事件处理程序调用 map.setCenter 不起作用。 2. bounds_changed 事件被引发了几次。我不确定如何区分在页面加载时在 fitBounds 之后调用的此事件和任何其他可能导致边界更改的事件,例如用户平移。 请在您“尝试过”的地方发布代码。你需要构建一个状态机来处理bounds_changed被调用的多次。【参考方案2】:是的,只需声明您的新边界对象。
var bounds = new google.maps.LatLngBounds();
然后对于每个标记,扩展您的边界对象:
bounds.extend(myLatLng);
map.fitBounds(bounds);
API:google.maps.LatLngBounds
【讨论】:
以上是关于特定标记上的中心地图和其他标记上的 fitToBounds的主要内容,如果未能解决你的问题,请参考以下文章