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

时间:2012-06-06 15:47:33

标签: google-maps google-maps-api-3 google-api google-maps-markers google-maps-api-2

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

在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();
        } 
    }

1 个答案:

答案 0 :(得分:40)

您想要的方法是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());  
}