setCenter()然后在地图画布上垂直向上移动标记

时间:2012-03-03 21:58:06

标签: javascript google-maps-api-3

我有一个简单的问题,希望有一个简单的答案。 。 。经过几个小时的搜索,我找不到它。

我有一堆带有标记的标准谷歌地图。我在每个标记上都有一个点击事件,这样当点击时,地图会将标记平移到中心并放大它。没问题。

现在我想更改事件处理程序,以便在单击标记时,地图会重新定位,以使标记水平居中,但它垂直朝向地图画布的顶部。是否有一种相对直接的方法可以在不同的缩放级别上工作?

谢谢, 卡盘

2 个答案:

答案 0 :(得分:1)

可能有很多方法,例如

google.maps.event.addListener(marker, 'click', function() {
          this.getMap().setCenter(this.getPosition());
          this.getMap().panBy(0,(this.getMap().getDiv().offsetHeight/2)+this.anchorPoint.y);
        });

它将标记放在中心,然后通过(mapHeight/2-markerHeight)

垂直平移地图

答案 1 :(得分:1)

您还可以使用getProjection()以及fromContainerPixelToLatLonfromLatLonToContainerPixel进行混乱,以便在数学的可视点内设置特定位置。

这两个将为您提供来自您用作地图画布的<div>元素的像素测量值。

c.f。 fromDivPixelToDivPixel将为您提供地图无限 div上项目的像素位置。说你的地图专注于非洲,对吧?你在纽约有一个别针。使用*DivPixel*变体将保持你的引脚在纽约,然后你可以平移它。无论您将其设置为Lat / Lon,使用*ContainerPixel*都会将您的图钉移动到地图上。