7

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

4

3 回答 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 方法中。

于 2016-04-08T00:57:18.383 回答
4

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

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

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

于 2010-07-19T20:51:59.680 回答
2

您还可以扩展 Polyline 类以添加您自己的 getBounds 方法。请参阅google maps api v3: add point on polyline beetwen 点击折线事件上的两个现有点,了解如何执行此操作。

于 2011-01-13T00:05:17.873 回答