Google Maps API v3 将地图重新​​定位到标记

Posted

技术标签:

【中文标题】Google Maps API v3 将地图重新​​定位到标记【英文标题】:Google Maps API v3 recenter the map to a marker 【发布时间】:2012-06-10 16:06:53 【问题描述】:

如果标记在地图之外,我正在寻找一种方法来重新定位(聚焦)地图。例如,如果您单击不在您的视图区域中的标记... 标记 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();
         
    

【问题讨论】:

您要的是在版本 3 或版本 2 中工作的代码吗?您同时拥有标签和版本 2 代码。 【参考方案1】:

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

【讨论】:

根据您的提示我更改了它(请参阅我的帖子顶部)...如果我使用PanTo,则不需要map.setCenter?现在我在“maps.gstatic.com/cat_js/intl/de_de/mapfiles/api-3/9/2/… 文件”中有一个“a 未定义” 更新了上面的代码。如果您继续收到错误,您可能需要发布更多代码。

以上是关于Google Maps API v3 将地图重新​​定位到标记的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery mobile、google maps API v3 将 infoWindow 添加到地图标记

google maps js v3 api教程 -- 创建一个地图

google maps js v3 api教程 -- 在地图上添加标记

Esri Feature Services和Google Maps API v3

如何在 Google Maps API v3 中使用 SVG 标记

Google Maps API V3:限制地图范围[重复]