2010-07-19 76 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方法中。

相关问题