数组包含Google地图drawingManager中多边形的纬度和经度

Use*_*Mat 2 google-maps latitude-longitude google-maps-api-3

这是在Google地图上添加绘图管理器以便用户绘制多边形,圆形,矩形等的最简单方法.

码:

<html>
<head>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=drawing"></script>

<script>
function initialize()
{
    var map = new google.maps.Map(document.getElementById('map'), {zoom: 12, center: new google.maps.LatLng(32.344, 51.048)});

    var drawingManager = new google.maps.drawing.DrawingManager();
    drawingManager.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
<div style="width:1024px; height:768px;" id="map"></div>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

我的问题:似乎你用这个工具绘制了一个多边形.如何读取或创建包含此多边形的纬度和经度的数组?

编辑:还有别的,也许用户在创建后编辑多边形,所以应该可以在版本之后读取这个数组,我认为我们不能通过点击地图来使用"e"参数.

Ale*_*exB 14

创建一个包含多边形的全局数组

var polygons = [];
Run Code Online (Sandbox Code Playgroud)

然后,在polygoncomplete事件中填充您的数组:

google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) {
    polygons.push(polygon);
Run Code Online (Sandbox Code Playgroud)

为了让用户在创建后编辑polgons,您必须setEditablepolygonComplete事件结束时调用

polygon.setEditable(true);
Run Code Online (Sandbox Code Playgroud)

如果你需要读取多边形顶点的所有lat/lng,你可以使用这个代码示例:

var polygonBounds = polygon.getPath();
var coordinates = [];

for(var i = 0 ; i < polygonBounds.length ; i++)
{
    coordinates.push(polygonBounds.getAt(i).lat(), polygonBounds.getAt(i).lng());
} 
Run Code Online (Sandbox Code Playgroud)