[map]使用google map api 的 GLatLngBounds 找出地圖最適的座標與zoom level

  • 27727
  • 0
  • map
  • 2012-07-02

找出最適的level與座標

這個案例是這樣的。使用者希望在地圖載入地標的時候,不管座標在哪裡,要一次能看到所有的地標。

這時我們可以這樣做。

map.setCenter(new GLatLng(0,0),0);  //要先設定map latlng 和 level
            
bounds = new GLatLngBounds();

在地圖初始的時候,我們並不知道待會要加入的地標後最適合的地圖座標與level,所以我們先給他一個最大的初始值。一定要先給初始值,否則下一句的建立GLatLngBounds物件的時候會發生錯誤。

for(var i = 0; i < points.length; i++)
{
    bounds.extend(new GLatLng(lat,lng));      
}

再把你要加入在地圖上的marker的座標給GLatLngBounds.extend的方法

map.setZoom(map.getBoundsZoomLevel(bounds));
map.setCenter(bounds.getCenter());

最後GLatLngBounds丟給GMap2.getBoundsZoomLevel的方法,他就會找出最適的level,再把地圖移動到marker們的中心點,這樣就可以達到在地圖上一次顯示所有輸入地標的功能了。

 順手再寫了一下縣市地位、地址定位和經緯度定位的功能在範例裡。有興趣的人請自行連結參考。謝謝大家。

範例

 

Jon@Dotblogs

 

---------------

這是簽名檔,I love Dotblogs