google-maps - 选择标记在 View 中时模仿 Google map 缩放行为

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

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

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

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

最佳答案

解决方案涉及大量数学。这是一般大纲:

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

  • 资源
  • Converting between Pixel and LatLng Coordinates
  • Spherical Geometry Library
  • 关于google-maps - 选择标记在 View 中时模仿 Google map 缩放行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059026/

    相关文章:

    javascript - 如何为一个页面上的多个谷歌地图添加DomListener?

    php - 使用数据库中的多个纬度和经度值在 Google map 上标记路线

    ios - 如何在 GMSMapView 上实现 GMSMarker 拖放?

    google-maps - 谷歌地图 api v2 中的最佳缩放点

    javascript - 从初始位置绘制 POLYGON

    javascript - 我可以检索更高分辨率的 map 图 block 吗?

    javascript - Google Maps v3 多边形、多段线交点

    android - Google 是否可以通过编程方式在打开 native 应用程序的移动浏览器上跟踪 Google map URL 的引荐来源网址?

    javascript - Google Map V3 在隐藏的 div 中偏离中心

    swift - 如何在google maps sdk中使用函数外的变量