我有一个容器来呈现谷歌地图实例,在这个容器上方我绘制(HTML)另一个带有搜索框(起点和终点)的容器。
选择原点时,会在地图中绘制一个标记(与目标输入相同)。
现在我需要“平移”地图以在搜索框的右侧显示标记。
现在,当我放置标记时,我使用 fitbounds 来确保标记位于地图容器内,但在某些情况下,标记会绘制在搜索框下方。
然后我尝试使用“panBy”方法在搜索框的右侧绘制地图的中心,但并不总是有效。
如何确保这两个标记始终可见并在搜索框的右侧绘制?
我有一个容器来呈现谷歌地图实例,在这个容器上方我绘制(HTML)另一个带有搜索框(起点和终点)的容器。
选择原点时,会在地图中绘制一个标记(与目标输入相同)。
现在我需要“平移”地图以在搜索框的右侧显示标记。
现在,当我放置标记时,我使用 fitbounds 来确保标记位于地图容器内,但在某些情况下,标记会绘制在搜索框下方。
然后我尝试使用“panBy”方法在搜索框的右侧绘制地图的中心,但并不总是有效。
如何确保这两个标记始终可见并在搜索框的右侧绘制?
考虑一下:您需要确保标记位于地图的右侧。如果我们得到 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)));
}
});