2011-11-02 21 views
5

いくつかのクリック後にユーザーが見て、復元する現在の位置を保存します。現在の潜在的な境界を取得しますか?

現在の緯度経度の境界を取得してmap.fitBoundsを作成するにはどうすればよいですか?ここで

+0

このスレッドは、複数の火災を避けるために、より良いANSERを持っている[答えるために行くためにクリック](http://stackoverflow.com/questions/4338490/google-map-event-bounds-changed-triggered-multipleドラッグ時) –

答えて

6

は、現在のマップの境界を捕捉するためのコードだ「のbounds_changed」イベント後

google.maps.event.addListener(map, 'bounds_changed', function() { 
     try { 
      if(initialBounds == null) { 
       initialBounds = map.getBounds(); 
      } 
     } catch(err) { 
      alert(err); 
     } 
    }); 

に、あなたはこのコードをGoogleマップで

google.maps.event.addDomListener(controlUI, 'click', function() { 
     // map.setCenter(home) 
     if(initialBounds != null) { 
      map.fitBounds(initialBounds); 
     } 
    }); 
1

getBounds()を使用してバウンドをマップ返すことができますAPI v3

したがって、緯度と経度を取得するには、getBounds()bounds_changedイベントリスナーに移動する必要があります。

 var map = new google.maps.Map(document.getElementById("map"), { 
      zoom: 10, 
      center: new google.maps.LatLng(lat, lng), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
    google.maps.event.addListener(map, 'bounds_changed', function() { 
       var bounds = map.getBounds(); 
       var ne = bounds.getNorthEast(); 
       var sw = bounds.getSouthWest(); 
       console.log(ne.lat()); 
       console.log(ne.lng()); 
       console.log(sw.lat()); 
       console.log(sw.lng()); 
    }); 

このイベントは、ビューポートの境界が変更されたときに発生します。あなたがそれにいくつかのajax呼び出しを持っているなら、地図の位置が変わるたびにajax呼び出しが呼び出されます。

この場合、より良い解決策はgetBounds()idleイベントリスナーに移動することです。このイベントは、ズーム後に地図がアイドルになると発生します。

 var map = new google.maps.Map(document.getElementById("map"), { 
      zoom: 10, 
      center: new google.maps.LatLng(lat, lng), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 
    google.maps.event.addListener(map, 'idle', function() { 
       var bounds = map.getBounds(); 
       var ne = bounds.getNorthEast(); 
       var sw = bounds.getSouthWest(); 
       console.log(ne.lat()); 
       console.log(ne.lng()); 
       console.log(sw.lat()); 
       console.log(sw.lng()); 
    }); 
関連する問題