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

时间:2010-07-19 20:31:19

标签: google-maps google-maps-api-3 polyline bounding-box bounds

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

3 个答案:

答案 0 :(得分:10)

扩展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方法中。

答案 1 :(得分:4)

v2 API使用GPolyline.getBounds()方法完成此操作。但是,似乎v3 API中没有等效的方法。

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

我认为谷歌故意从v3 API中省略了这些方法,试图保持API的轻量级。类似的遗漏LatLngBounds.extend()discussed a couple of days ago on Stack Overflow方法。

答案 2 :(得分:2)

您还可以扩展Polyline类以添加自己的getBounds方法。有关如何执行此操作,请参阅google maps api v3: add point on polyline beetwen two existing points on click polyline event