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