![](/img/trans.png)
[英]Google Maps API v3 save and reuse shape from drawingManager
[英]Google Maps API v3: Getting geometry of a drawn shape
我目前正在使用Google Maps API v3.13。 我已经停止了我的编码,文档对我不再有帮助了。
我所做的是我已经实现了DrawingLibrary,我可以在地图上绘制形状。 我画完东西后想做的是得到绘制的形状的边界框/角(我只激活了折线和矩形)。
然后我想使用这个区域来查看是否有任何标记,然后使它们“有弹性”或类似的东西。 所以我的问题是,我如何获得用户绘制的区域? 这个数据的格式是什么? 每个角落的坐标? 我是否必须将DrawingLibrary的功能与GeometryLibrary结合使用才能执行此操作?
我已检查过这些文档,但仍无法找到解决方案。 https://developers.google.com/maps/documentation/javascript/geometry https://developers.google.com/maps/documentation/javascript/drawing
这是我到目前为止:
function bindOverlayFinishedEvents() {
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.POLYGON) {
//bounds = event.overlay.getBounds();
}
else if (event.type == google.maps.drawing.OverlayType.RECTANGLE) {
//bounds = event.overlay.getBounds();
}
});
}
任何帮助将不胜感激!
由于您的目标是确定标记是否位于某个区域内,因此以下示例演示了如何根据形状类型完成标记:
circle.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(circle.getCenter(), latLng) <= circle.getRadius()
rectangle.getBounds().contains(latLng)
google.maps.geometry.poly.containsLocation(latLng,polygon)
包装函数用于确定点是否位于形状内:
//wrapper for contains function
var shapeContains = function (shape, latLng) {
if (shape instanceof google.maps.Circle)
return shape.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(shape.getCenter(), latLng) <= shape.getRadius();
else if (shape instanceof google.maps.Rectangle)
return shape.getBounds().contains(latLng);
else if(shape instanceof google.maps.Polygon)
return google.maps.geometry.poly.containsLocation(latLng, shape);
else
throw new Error("contains is not supported for this type of shape");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.