选定标记在视图中时模仿Google地图缩放行为

时间:2012-08-21 16:14:38

标签: google-maps google-maps-api-3

正如问题Keeping the InfoWindow in view when zooming map in中所指出的,当InfoWindows可见时,v3 API似乎会发生变化,影响默认行为。

Google在自己的地图网站(http://goo.gl/maps/8ymit)上的默认行为是通过以不同方式处理缩放来解决此问题。如果当前所选标记在视口中可见,则看起来缩放的“中心”设置为标记位置;否则它默认为地图的中心(或双击或鼠标滚轮滚动时鼠标的位置)。

如何复制Google地图网站的行为?我知道如何获取当前所选标记的位置并判断它是否可见。但是,我没有任何运气设置缩放活动的“中心”与设置地图中心分开。

1 个答案:

答案 0 :(得分:1)

解决方案涉及大量数学。以下是概要:

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