2010-07-19 62 views
5

是否有任何簡單的方法可以使用Google Maps API v3查找多段線的包圍框?我正在研究一個項目,我需要在數據從地圖中添加和刪除時更新邊界。這很簡單,只要做bd.extend(point),其中bd是綁定對象,point是LatLng對象。問題是當我開始刪除數據時,我希望它能夠改變邊界並放大回去。是否有內置的函數可以做到這一點,還是我需要爲自己寫點東西?在Google Maps API v3中獲取polyine的界限

回答

4

v2 APIGPolyline.getBounds()方法來做到這一點。但是,似乎v3 API中沒有等效的方法。

您可能想要通過覆蓋您的PolylineMVCObjectchanged屬性來處理此問題,以便在對象更改狀態時得到通知。然後,您可以使用您建議的LatLngBounds.extend()方法計算邊界框。

我認爲谷歌有意從v3 API中省略了這些方法,試圖保持API輕量級。類似的省略discussed a couple of days ago on Stack OverflowGMap2.clearOverlays()方法。

7

在oenpelli的解決方案上進行了擴展,這是我用來從V2 API重新創建功能的擴展getBounds()方法。這在我的項目中完美運作。

google.maps.Polyline.prototype.getBounds = function() { 
    var bounds = new google.maps.LatLngBounds(); 
    this.getPath().forEach(function(item, index) { 
     bounds.extend(new google.maps.LatLng(item.lat(), item.lng())); 
    }); 
    return bounds; 
}; 

請記住,這需要在加載API之後添加,因此在您的init方法中。