谷歌地图:放大/缩小与平移到特定点,如maps.google.com上下文菜单

Google maps: zoom in/out with panning to specific point like in maps.google.com context menu

本文关键字:maps google 菜单 上下文 com 放大 缩小 谷歌地图      更新时间:2023-09-26

我有一个项目与谷歌地图。我想模拟maps.google.com上下文菜单与Zoom inZoom out的动作。
google.maps.Map.setZoom()是缩放地图到中心点,但在maps.google.com中,当您右键单击特定点并选择放大/缩小动作时,地图正在平移,使此特定点保持在同一位置。例如,如果我右键单击左上角的点,并在上下文菜单中选择Zoom in,那么这个点在缩放后保持在光标下,并且不会超出地图边界。
是否有一个简单的方法来实现这个功能?

您可以使用标记来处理它。我不知道这是不是最有效的方法。

在当前鼠标位置添加一个标记(可以跟踪鼠标光标,对吧?上次什么都没做。)然后将地图中心设置为该标记(我知道,有一个功能),然后删除标记。

编辑:哦,对不起,我想我误解了你的问题。因为这就相当于双击一个点,对吧?所以你想让鼠标<->顶部和鼠标<->左侧在屏幕上的距离与它下面的点保持一致,但是再放大/缩小一个阶段?

一个类似的问题被问到并回答在:缩放到鼠标(例如。谷歌地图)。

我解决这个问题的方法是沿着相同的路线,除了我的地图像素坐标都是相对于地图的中心(而不是左上角)计算的:

  1. 确定特定点相对于地图中心的像素偏移量。以像素为单位的地图矩形尺寸可以像 Map . getdiv (). getclientrects ()[0]和中心只是矩形的中心。
  2. 计算放大/缩小后特定点的新像素偏移量。对于Google Maps 缩放,所有像素偏移量都是双倍的(对于单个缩放步骤),所以如果您的特定点从中心[30,40],那么在正常缩放后它将从地图中心[60,80](或者在正常缩放后它将[15,20])
  3. 计算缩放后需要调整多少地图中心,使特定点回到开始的地方。在上面的示例中,在放大之后,我们需要进行映射。panBy(-30, -40),或者在缩放之后,我们需要映射。panBy(15、20)。
  4. 应用法线贴图。setzoom(缩放),然后是计算贴图。panBy(dX, dY)重新居中