2013-02-15 81 views
0

我有一个容器来渲染一个谷歌地图实例,在这个容器上方绘制(HTML)另一个带有搜索框(Origin和Destination)的容器。Javascript API谷歌地图设置中心屏幕右侧

选择原点时,会在地图中绘制标记(与目标输入相同)。

现在我需要“平移”地图以显示搜索框右侧的标记。

现在,当我把一个标记我使用fitbounds,以确保标记是在地图容器内,但在某些情况下,标记是在搜索框下绘制。

然后我尝试使用“panBy”方法在搜索框的右侧绘制地图的中心,但并不总是奏效。

如何确保两个标记始终可见并在搜索框的右侧绘制?

回答

0

想一想:您需要确保标记位于地图的右侧。如果我们获得NE坐标以及中心,我们可以将其与标记位置进行比较,并根据需要轻松设置新中心。

代码:

google.maps.event.addListener(marker, 'click', function() { 
    var markerPos = this.getPosition(), center = map.getCenter(), 
     mapNE = map.getBounds().getNorthEast(); 

    if(!(markerPos.lng() > center.lng() && markerPos.lng() < mapNE.lng())) { //marker is not on the right side 
     //based on center and NE calulate pos to center the marker 
     map.setCenter(new google.maps.LatLng(markerPos.lat(), (markerPos.lng() - (mapNE.lng() - center.lng())/2))); 
    } 
});