在Google Maps API v3中获取折线的边界

blc*_*llo 6 google-maps bounding-box polyline bounds google-maps-api-3

有没有简单的方法可以使用Google Maps API v3找到折线的边界框?我正在开发一个项目,我需要在地图中添加和删除数据时更新边界.只需执行bd.extend(point)就可以轻松实现这一点,其中bd是绑定对象,point是LatLng对象.问题是,当我开始删除数据时,我希望它能够更改边界并放大.是否有任何内置函数可以执行此操作或者我是否需要为自己编写内容?

Jam*_*arl 11

扩展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;
};
Run Code Online (Sandbox Code Playgroud)

请记住,这需要在API javascript加载后添加,因此在您的init方法中.


Dan*_*llo 4

v2 APIGPolyline.getBounds()方法可以做到这一点。然而, v3 API中似乎没有等效的方法。

您可能希望通过覆盖changed您的属性来处理此问题Polyline MVCObject,以便在对象更改状态时收到通知。然后您可以使用您建议的方法计算边界框LatLngBounds.extend()

我认为 Google 故意从 v3 API 中省略了此类方法,以保持 API 的轻量级。几天前在 Stack Overflow 上讨论过的一个类似的遗漏就是GMap2.clearOverlays()方法。