我有一个用户在地图上绘制一个多边形。一旦完成多边形,我就可以得到每个点的坐标以显示在页面上。如果在完成多边形后移动多边形,坐标将随着移动而更新。有没有办法可以解决这个问题,以显示用户单独创建的所有点的纬度和经度,并通过移动进行更新?
目前显示如下:
坐标
(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类,但我没有运气。感谢您的帮助,谢谢。
答案 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++;
}
现在我必须让它更新,如果多边形被移动或修改