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