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

时间:2011-09-26 22:35:03

标签: javascript google-maps google-maps-api-3 contextmenu zoom

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

2 个答案:

答案 0 :(得分:0)

你可以用标记处理它。 我不知道这是否是最有效的方式。

所以你在当前鼠标位置添加一个标记(你可以跟踪你的鼠标光标,对吗?上次没有做任何事情) 然后将地图中心设置为该标记(我知道,它有一个功能)并只删除标记。

编辑:哦对不起,我想我误解了你的问题。 Cuz与点击一个点是一样的吗? 所以你想让鼠标左边的距离< - >顶部和鼠标< - >保持原样与它下面的点保持一致,但是一个阶段更加放大/缩小?

答案 1 :(得分:0)

Zoom toward mouse (eg. Google maps)上提出并回答了同等问题。

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

  1. 确定特定点相对于地图中心的像素偏移量。可以获得像素的地图矩形尺寸,例如 map.getDiv()。getClientRects()[0] ,中心就是矩形的中心。
  2. 计算放大/缩小后特定点的新像素偏移量。对于谷歌地图放大,所有像素偏移都加倍(对于单个缩放步骤),因此如果您的特定点距离中心[30,40],它将是[60,80]正常放大后的地图中心(或正常缩小
  3. 后将为[15,20]。)
  4. 计算缩放后调整地图中心所需的数量,以便将特定点返回到开始位置。在上面的示例中,在放大之后,我们需要map.panBy(-30,-40),或者在缩小之后我们需要map.panBy(15 ,20)。
  5. 应用法线map.setZoom(缩放),然后将计算出的map.panBy(dX,dY)应用于重新定位。