[英]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.