簡體   English   中英

Google Maps API v3:獲取繪制形狀的幾何圖形

[英]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();
    }
});

}

任何幫助將不勝感激!

由於您的目標是確定標記是否位於某個區域內,因此以下示例演示了如何根據形狀類型完成標記:

  • for circle: circle.getBounds().contains(latLng) && google.maps.geometry.spherical.computeDistanceBetween(circle.getCenter(), latLng) <= circle.getRadius()
  • for rectangle: rectangle.getBounds().contains(latLng)
  • for polygon: 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");
}

Codepen(演示)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM