15

マーカがマップ外にある場合は、マップを再センタリング(フォーカス)する方法を探しています。たとえば、あなたのビューエリアにないマーカーをクリックすると... マーカー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.setCenter(marker.getPosition())またはmap.panTo(marker.getPosition())

map.getBounds().contains(marker.getPosition())

あなたはsetCenter()、またはマーカーの位置を中心にするマップのpanToの()メソッドのいずれかを使用することができますこのように:

if ((!map.getBounds().contains(marker.getPosition())) && (showAllCategoryElements == 0)) { //Note the double & 
    map.setCenter(marker.getPosition()); 
    //OR map.panTo(marker.getPosition()); 
} 
+0

あなたのヒントと私はそれを変更しました(私のポストのトップを参照してください)... '' PanTo'を使用する場合、 'map.setCenter'は不要ですか?今私は "http://maps.gstatic.com/cat_js/intl/de_de/mapfiles/api-3/9/2/%7Bmain,geometry%7D.jsファイル"の "未定義"です – Jim

+0

コードを更新しました上記。引き続きエラーが発生する場合は、コードを投稿する必要があります。 – puckhead

関連する問題