有没有一种简单的方法使用Google Maps API v3查找折线的边界框?我正在开展一个项目,需要在添加和删除数据时更新范围。这很容易,只需执行bd.extend(point)即可,其中bd是绑定对象,point是LatLng对象。问题是当我开始删除数据时,我希望它改变边界并放大缩小。是否有任何内置函数可以做到这一点,或者我需要自己编写代码呢?
有没有一种简单的方法使用Google Maps API v3查找折线的边界框?我正在开展一个项目,需要在添加和删除数据时更新范围。这很容易,只需执行bd.extend(point)即可,其中bd是绑定对象,point是LatLng对象。问题是当我开始删除数据时,我希望它改变边界并放大缩小。是否有任何内置函数可以做到这一点,或者我需要自己编写代码呢?
在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 JavaScript 加载完成后添加,所以在您的 init 方法中执行。
v2 API有GPolyline.getBounds()
方法可以实现这个功能。然而,在v3 API中似乎没有相应的方法。
您可以通过覆盖Polyline
MVCObject
的changed
属性来处理此问题,以便在对象更改状态时收到通知。然后,您可以使用您建议的LatLngBounds.extend()
方法计算边界框。
GMap2.clearOverlays()
方法。您还可以扩展Polyline类以添加自己的getBounds方法。请参阅google maps api v3: add point on polyline beetwen two existing points on click polyline event了解如何执行此操作。