Google Maps API v3会将地图重新​​标记为标记

Jim*_*Jim 16 google-maps google-api google-maps-api-3 google-maps-markers google-maps-api-2

我正在寻找一种方法来重新定位(聚焦)地图,如果标记在地图之外.例如,如果您点击不在您的视野中的标记...标记1:纽约标记2:SanFransisco

在V2我这样做...但对于v3,containsLatLng需要一个额外的库并且对我不起作用...(参见我的另一篇文章: Google Maps v3 map.getBounds().containsLatLng不是函数)是他们任何其他方式聚焦到标记位置?

更新:

        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();
        } 
    }
Run Code Online (Sandbox Code Playgroud)

puc*_*ead 41

你想要的方法是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());  
}
Run Code Online (Sandbox Code Playgroud)