如何在Google Maps API v3中获取所有多边形点的纬度和经度?

时间:2017-07-18 15:03:24

标签: javascript google-maps google-maps-api-3

我有一个用户在地图上绘制一个多边形。一旦完成多边形,我就可以得到每个点的坐标以显示在页面上。如果在完成多边形后移动多边形,坐标将随着移动而更新。有没有办法可以解决这个问题,以显示用户单独创建的所有点的纬度和经度,并通过移动进行更新?

目前显示如下:

坐标

(37.71859032558816,-121.563720703125),(38.10862766432127,-120.1904296875),(36.77409249464195,-120.08056640625),(36.2354121683998,-117.784423828125),(35.951329861522666,-119.8828125)

我想打破它并让它显示如下:

形状1:

纬度:

第1点:37.71859032558816

第2点:38.10862766432127

第3点:36.77409249464195

第4点:36.2354121683998

第5点:35.951329861522666

经度:

第1点:-121.563720703125

第2点:-120.1904296875

第3点:-120.08056640625

第4点:-117.784423828125

第5点:-119.8828125

以下是我目前的情况:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e)
{
    drawingManager.setDrawingMode(null);
    shapes.add(e);
    // getPath(): return value: MVCArray<LatLng>
    // getArray(): return value: Array<LatLng>
    var arrayOne = e.overlay.getPath().getArray();
    document.getElementById('coordinates').innerHTML = arrayOne;

    // var latitude = ?
    // var longitude = ?

    document.getElementById('latitude').innerHTML = latitude;
    document.getElementById('longitude').innerHTML = longitude;

    google.maps.event.addListener(e.overlay.getPath(), 'set_at', function()
    {
        // getPath(): return value: MVCArray<LatLng>
        // getArray(): return value: Array<LatLng>
        var arrayOne = e.overlay.getPath().getArray();
        document.getElementById('coordinates').innerHTML = arrayOne;

        // var latitude = ?
        // var longitude = ?

        document.getElementById('latitude').innerHTML = latitude;
        document.getElementById('longitude').innerHTML = longitude;
    });

    google.maps.event.addListener(e.overlay.getPath(), 'insert_at', function()
    {
        // getPath(): return value: MVCArray<LatLng>
        // getArray(): return value: Array<LatLng>
        var arrayOne = e.overlay.getPath().getArray();
        document.getElementById('coordinates').innerHTML = arrayOne;

        // var latitude = ?
        // var longitude = ?

        document.getElementById('latitude').innerHTML = latitude;
        document.getElementById('longitude').innerHTML = longitude;
      });
});

我遇到过一些事情,比如getAt(),geometry.location.lat()和LatLng类,但我没有运气。感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

似乎可以在https://stackoverflow.com/a/19488826

找到我的问题的解决方案

稍微修改一下代码可以让我实现我想要的输出

var polygonBounds = e.overlay.getPath();
var testArray = [];

for (var a = 0; a < polygonBounds.length; a++)
{
    testArray.push(polygonBounds.getAt(a).lat(), polygonBounds.getAt(a).lng());
}

var latPoint = 1;
var lngPoint = 1;


for (var b = 0; b < testArray.length; b += 2)
{
    document.getElementById('latitude').innerHTML += ("Point " + [latPoint] + ": " + testArray[b] + "<br /><br />");
    latPoint++;
}

for (var c = 0; c < testArray.length; c += 2)
{
    document.getElementById('longitude').innerHTML += ("Point " + [lngPoint] + ": " + testArray[c] + "<br /><br />");
    lngPoint++;
}

现在我必须让它更新,如果多边形被移动或修改