如何让fitBounds了解自定义控件

Sou*_*oup 6 google-maps google-maps-api-3

我的谷歌地图左侧有一个大型(300*500px)自定义控件.我把我的标记聚集在一起.当用户点击标记时,我想缩放地图以显示该群集中的标记.

问题是:

当我得到我的标记集合的边界时map.fitBounds(collection_bounds),我最终在我的大型控件下面有标记.有没有办法阻止fitBounds使用整个视口?

我试图得到LatLng我的西南方界点,即转化为像素,移动是300像素的,然后是转换一个LatLng作为新的西南边界点使用.这不起作用,因为计算是在缩放之前完成,所以300px的移位最终太多了...我想写自己的fitBounds,但我遇到了同样的问题,因为它是在缩放之前完成的.

Mar*_*elo 4

你说的有效:

我尝试获取西南边界点的 LatLng,将其转换为像素,移动 300px,然后将其转换回 LatLng 以用作新的西南边界点。

如果你分两步完成,这对用户来说几乎是透明的,因为它执行得如此之快以至于你几乎没有注意到它。因此,首先您执行法线map.fitBounds(bounds);,其中边界仅由标记定义,然后使用您描述的技术重新调整。所以:

  google.maps.event.addListenerOnce(map,'bounds_changed',function(){
    // re-adjust bounds here as you described. 
    // This event fires only once and then the handler removes itself.
  });
  map.fitBounds(bounds);
Run Code Online (Sandbox Code Playgroud)