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

7

有没有一种简单的方法使用Google Maps API v3查找折线的边界框?我正在开展一个项目,需要在添加和删除数据时更新范围。这很容易,只需执行bd.extend(point)即可,其中bd是绑定对象,point是LatLng对象。问题是当我开始删除数据时,我希望它改变边界并放大缩小。是否有任何内置函数可以做到这一点,或者我需要自己编写代码呢?

3个回答

16

在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 方法中执行。


4

v2 APIGPolyline.getBounds()方法可以实现这个功能。然而,在v3 API中似乎没有相应的方法。

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

我认为Google有意从v3 API中省略了这些方法,以试图使API轻量化。类似的省略在Stack Overflow上几天前讨论过,其中一个是GMap2.clearOverlays()方法。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接