javascript - 如何使用谷歌地图 DrawManager 以编程方式绘制多边形

标签 javascript google-maps drawing

我正在使用谷歌地图来定义城市的区域。用户绘制多边形以确定所需区域。为了达到这个目标,我引用了 DrawingManager 文章 this article .一切顺利,我想更新注册区域并绘制多边形。我想遵循的路径是使用 DrawingManager。这是我的代码。代码正确加载 map ,但它不会根据给定坐标绘制我的多边形。

GoogleMap.prototype.initial = function (currentPolygonData) {
var self = this;
var triangleCoords = [];
if (currentPolygonData != null && currentPolygonData.length>0) {
    triangleCoords = [];
    for (var i = 0; i < currentPolygonData.length; i++) {
        triangleCoords.push(new google.maps.LatLng(currentPolygonData[i].Lat, currentPolygonData[i].Lng));
    }
}
var polyOptions = {
    paths: triangleCoords,
    strokeColor: '#bb4446',
    fillColor: '#c37172',
    strokeWeight: 0,
    fillOpacity: 0.45,
    editable: true,
    draggable: true,
};

self.drawingManager = new google.maps.drawing.DrawingManager({
    drawingMode: google.maps.drawing.OverlayType.POLYGON,
    drawingControlOptions: {
        drawingModes: [
            google.maps.drawing.OverlayType.POLYGON
        ]
    },
    markerOptions: {
        draggable: true

    },
    polylineOptions: {
        editable: true,
        draggable: true

    },
    rectangleOptions: polyOptions,
    circleOptions: polyOptions,
    polygonOptions: polyOptions,
    map: self.map
});}

最佳答案

LatLng 集合的数据类型应该是一个字典数组,键分别为纬度和经度的“lat”和“lng”。

因此在你的代码中它应该是

var triangleCoordsArr = {};
if (currentPolygonData != null && currentPolygonData.length>0) {
    for (var i = 0; i < currentPolygonData.length; i++) {
        triangleCoords = {};
        triangleCoords['lat'] = currentPolygonData[i].Lat;
        triangleCoords['lng'] = currentPolygonData[i].Lng;
        triangleCoordsArr.push(triangleCoords)
    }
}    
for (var i = 0; i < triangleCoordsArr.length; i++) {
    // Construct the polygon.
    var mTriangle = new google.maps.Polygon({
        paths: triangleCoordsArr[i],
        strokeColor: '#FF0000',
        strokeOpacity: 0.8,
        strokeWeight: 2,
        fillColor: '#FF0000',
        fillOpacity: 0.35
    });
    mTriangle.setMap(map);
}

还有,这里是reference link from Maps Documentation应该有助于获得更多信息来解决您的问题

关于javascript - 如何使用谷歌地图 DrawManager 以编程方式绘制多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053192/

相关文章:

google-maps - 谷歌地理编码停止为乌克兰克里米亚工作

cocoa - 手动绘制NSView的 subview

c# - BufferedGraphics 在表单加载事件中不起作用?

javascript - 使YouTube视频播放器从列表服务器端随机播放视频

javascript - 将 Php 数组作为 Javascript 数组值传递

javascript - 如何使用 toDataURL 从 Canvas 发送图像到 php

java - 如何使用 drawArc()

javascript - 将事件呈现为禁用字段

javascript - Google map 地理定位 API 非移动设备?

javascript - 谷歌地图中的 "You have exceeded your request quota for this API"