2012-01-11 11 views
0

私は新しいプロジェクトにGoogle Mapsを実装しています.1ページはカナダの地図(100%* 100%)を返します。また、ジオコーディングを使用して、マップに渡すlatlngを決定しています。それはそれ以外うまく働いてGoogle Maps - ジオコーディングされた住所のビューポートを巧みにする方法

var myLatlng = new google.maps.LatLng(37.775, -122.4183333); 
     var myOptions ={ 
      zoom: 5, 
      center: myLatlng, 
      mapTypeId: google.maps.MapTypeId.TERRAIN 
     } 

     map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

     var address = "Canada"; 
     var geocoder = new google.maps.Geocoder(address); 
     geocoder.geocode({ 'address': address}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       //map.setCenter(results[0].geometry.location); 
          //The above was too far north 
       map.fitBounds(results[0].geometry.viewport); 
       map.setZoom(5); 
      } else { 
       alert("Geocode was not successful for the following reason: " + status); 
      } 
     }); 

「少し遠く左に」です:

は、ここでは、コードです。本質的に、それは海洋の大部分の大部分を切り離しました。例はここで見ることができます:

http://50.28.69.176/~sequoia/locations.php

は、国がより良いビューポートの中心に置かれるように、これをフィネスする方法を誰もが知っていますか?

ありがとうございました。

答えて

1

ページが読み込まれるたびにジオコーディングするのではなく、ちょうど正しいLatLngを取得して保存することをお勧めします。

このアプローチを採用したい場合は、LatLngBoundsgetCenter()メソッドを使用して中心を取得できます。

方法、あなたは

map.fitBounds(results[0].geometry.viewport.getCenter()) 
map.setZoom(5) 
を呼び出すことができます