特定标记上的中心地图和其他标记上的 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌地图的指定位置获取标记(或图钉)?

设置地图缩放以覆盖所有标记;确保以特定标记为中心

如何禁用android地图标记单击自动中心

Google Maps v2 上的动画标记

在我的屏幕上显示给我的区域中的android上的地图中显示标记

从谷歌地图上的 JSON 更新标记