15

我正在寻找一种方法来重新映射(聚焦)地图,如果标记在地图之外。例如,如果你点击一个标记不在你的viewarea ... 标记1:纽约标记2:SanFransiscoGoogle Maps API v3将地图重新​​映射到标记

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

你问的这3版或第2版运行的代码?您同时拥有标签和版本2代码。 –

回答

38

你想用的方法包括(),而不是containsLatLng()。 map.getBounds().contains(marker.getPosition())

你可以使用任何的setCenter()或哑剧()地图居中上的标记位置的方法: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()); 
} 
+0

与你的提示,我改变了它(见我的帖子的顶部)...''map.setCenter'不是必需的,如果我使用'PanTo'?现在我在“http://maps.gstatic.com/cat_js/intl/de_de/mapfiles/api-3/9/2/%7Bmain,geometry%7D.js文件”中有一个“a is undefined” – Jim

+0

更新后的代码以上。如果您继续发生错误,您可能需要发布更多代码。 – puckhead