20

如果标记在地图外,我正在寻找一种方法来重新定位(聚焦)地图。例如,如果您单击不在您的视图区域中的标记... 标记 1:纽约 标记 2:旧金山

在 V2 中我这样做了...但是对于 v3,containsLatLng 需要一个额外的库并且对我不起作用...(请参阅我的另一篇文章: Google Maps v3 map.getBounds().containsLatLng is not a function)是他们还有其他方法可以聚焦到标记位置吗?

更新:

        if ((!map.getBounds().contains(marker.getPosition())) & (showAllCategoryElements == 0)) {
        var newCenterPointLng = (map.getBounds().getCenter().lng() + marker.getPosition().lng()) / 2;
        var newCenterPointLat = (map.getBounds().getCenter().lat() + marker.getPosition().lat()) / 2;

        map.panTo(marker.getPosition());
        //map.setCenter(new google.maps.LatLng(newCenterPointLat, newCenterPointLng));

        if (!map.getBounds().contains(marker.getPosition())){
            map.zoomOut();
        } 
    }
4

1 回答 1

52

您想要的方法是 contains(),而不是 containsLatLng()。map.getBounds().contains(marker.getPosition())

您可以使用地图的 setCenter() 或 panTo() 方法以标记位置为中心:map.setCenter(marker.getPosition())map.panTo(marker.getPosition())

因此,如果我正确理解您要执行的操作,它应该如下所示:

if ((!map.getBounds().contains(marker.getPosition())) && (showAllCategoryElements == 0)) { //Note the double &  
    map.setCenter(marker.getPosition());  
    //OR map.panTo(marker.getPosition());  
}
于 2012-06-06T15:56:44.690 回答