当“选定标记”处于视图中时,模拟谷歌地图缩放行为



正如在放大地图时保持InfoWindow在视图中的问题中所指出的,v3 API似乎发生了变化,当InfoWindows可见时,会影响默认行为。

谷歌在自己的地图网站上的默认行为(http://goo.gl/maps/8ymit)通过不同的缩放处理来解释这一点。如果当前选定的标记在视口中可见,则缩放的"中心"似乎设置为标记位置;否则,它默认为地图的中心(或者在双击或鼠标滚轮滚动的情况下为鼠标的位置)。

如何复制谷歌地图网站的行为?我知道如何获得当前选定标记的位置,并判断它是否可见。然而,我没有幸运地将缩放活动的"中心"与设置地图的中心分开设置。

这个解决方案涉及很多数学问题。以下是概要:

  1. 计算当前缩放级别下当前地图视口的两条边之间显示的物理距离(通常以米为单位)
  2. 确定距离标记最近边缘的像素距离
  3. 确定在新缩放级别下当前地图的两条边之间显示的距离
  4. 使用步骤2中的像素距离,计算新的地图中心应该是什么,以使标记保持在相同的相对位置
  5. 设置地图缩放级别和中心点

资源

  • 在像素坐标和LatLng坐标之间转换
  • 球形几何图形库

最新更新