5

我正在尝试检索折线和多边形的纬度坐标。在完成任一对象的绘制后,我想将 latlng 存储在数据库中,但现在我只是试图在 textarea 中显示 latlng。对于标记、矩形和圆形,我已经很容易做到这一点,但是折线和多边形的术语让我感到困惑。当我完成绘图时,我使用 addDomListener(drawingManager, 'polygoncomplete', ... 用于多边形,然后遍历我绘制的所有多边形。对于每个多边形,然后遍历其坐标数组。我搜索了这个论坛数据库并在 Google 文档页面上尝试了百慕大三角示例 我已经阅读了很多次文档,只是看不到我缺少什么。任何帮助表示赞赏。

//Save polygons data to text area
                var polygons = [];

                google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function(polygon) {
                  polygons.push(polygon);
                });

                google.maps.event.addDomListener(savebutton, 'click', function() {
                    document.getElementById("savedatapolygon").value = "";
                    for (var i = 0; i < polygons.length; i++) {
                      var polygonBounds = polygons[i].getPath();
                      var xy;
                        // Iterate over the polygonBounds vertices.
                        for (var i = 0; i < polygonBounds.length; i++) {
                            xy = polygonBounds.getAt(i);
                            contentString += '<br>' + 'Coordinate: ' + i + '<br>' + xy.lat() +',' + xy.lng();
                        }
                      document.getElementById("savedatapolygon").value += "polygon(";
                      document.getElementById("savedatapolygon").value += contentString;
                      document.getElementById("savedatapolygon").value += ")";

                    }
        });
4

1 回答 1

19

Google Maps Polygon类返回一个MVCArray。您需要使用MVCArrayforEach的方法来循环它。

var polygonBounds = polygons[i].getPath();
// Iterate over the polygonBounds vertices.
polygonBounds.forEach(function(xy, i) {
  contentString += '<br>' + 'Coordinate: ' + i + '<br>' + xy.lat() +',' + xy.lng();
});
document.getElementById("savedatapolygon").value += "polygon(";
document.getElementById("savedatapolygon").value += contentString;
document.getElementById("savedatapolygon").value += ")";
于 2013-02-19T21:53:23.650 回答