2012-01-11 61 views
0

我正在實施谷歌地圖到一個新的項目和一個頁面應該返回一個大的(100%* 100%)加拿大地圖。我還使用地理編碼來確定要傳遞給地圖的緯度。谷歌地圖 - 如何精確的地理編碼地址的視口

下面的代碼:

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,並存儲它。

如果你仍然想堅持這種方法,你可以使用getCenter()方法在LatLngBounds得到它的中心。

這樣的話,你可以叫

map.fitBounds(results[0].geometry.viewport.getCenter()) 
map.setZoom(5)