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