2010-05-29 103 views
11

我是Google Maps API的新手。我希望獲得關於實現以下功能的建議:每當頁面加載時,地圖將以美國爲中心加載。想象一下美國的一個盒子,它有給定的經緯度來指定最小和最大邊界。我需要以適當的縮放加載地圖(並且需要禁用縮放),以便此框組成整個地圖。Google Maps API - 加載美國

基本上,我想知道是否有一個函數,加載地圖基於緯度/長邊界(或某種方式來實現這一點),而不是加載給定縮放級別的地圖。

回答

14

假設你正在使用的v3 API,您可能需要使用fitBounds方法如下:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps fitBounds</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 350px;"></div> 

    <script type="text/javascript"> 
     var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': 'US'}, function (results, status) { 
     var ne = results[0].geometry.viewport.getNorthEast(); 
     var sw = results[0].geometry.viewport.getSouthWest(); 

     map.fitBounds(results[0].geometry.viewport);    
     }); 
    </script> 
</body> 
</html> 

截圖:

Google Maps fitBounds

在上面的例子中,我發現了通過地理編碼美國的視口。不過,您也可以通過傳遞東北和西南點來自己創建一個對象,並且方法將縮放並平移地圖,以使其適合地圖畫布。

+0

謝謝! fitBounds()正是我正在尋找的 – hjk 2010-05-29 23:48:22

+0

@hjk:我回答了[幾個月前的類似問題](http://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3-不 - 不適合界/ 2496558#2496558)。它顯示一個紅色邊界框'fitBounds'如何反應。紅色邊界框表示您將傳遞給'fitBounds'的'LatLngBounds'。 – 2010-05-29 23:51:54

+0

謝謝Daniel,這很有幫助。所以Google地圖無法調整縮放的粒度?即他們的縮放級別是固定的? – hjk 2010-05-29 23:57:27

1

好吧,由於美國的大小和形狀不會經常改變,您可以手動找到最佳設置並使用它們。

+1

是的,但我的邊界框的座標可能會改變... – hjk 2010-05-29 23:37:32