谷歌地图api v2获取多边形坐标

时间:2012-02-08 20:28:31

标签: coordinates polygon google-maps-api-2

我是google maps api的初学者。我设法让用户在地图上绘制一个多边形,然后我想获得绘制多边形上的坐标。

我使用了以下代码段,但它给了我以下错误未捕获TypeError:对象[object Object]没有方法'getPath'

这是我使用的代码

function startShape() {


    initialize();
    document.getElementById('lat').disabled = true;
    document.getElementById('lng').disabled = true;
  var polygon = new GPolygon([],"ff0000", 2, 0.7,"ff0000",0.2);
  startDrawing(polygon, "Shape " + (++shapeCounter_), function() {
    var cell = this;
    var area = polygon.getArea();
    cell.innerHTML = (Math.round(area / 10000) / 100) + "km<sup>2</sup>";
  });
  showcoor(polygon);
}




function startDrawing(poly, name, onUpdate) {

 map.addOverlay(poly);
  poly.enableDrawing(options);
  poly.enableEditing({onEvent: "mouseover"});
  poly.disableEditing({onEvent: "mouseout"});
  GEvent.addListener(poly, "endline", function() {
    //var cells = addFeatureEntry(name, color);
    //GEvent.bind(poly, "lineupdated", cells.desc, onUpdate);
    GEvent.addListener(poly, "click", function(latlng, index) {
      if (typeof index == "number") {
        poly.deleteVertex(index);
      } 
    });
  });


}


function showcoor (poly) {
GEvent.addListener(poly, "endline", function() {
    GEvent.addListener(poly, "click", function() {
    var str;
               var vertices = this.getPath();
              for (var i =0; i < vertices.length; i++) {
                var xy = vertices.getAt(i);
                str += xy.lat() +"," + xy.lng()+"<br />";
              }
              alert (str);
            });
            });
    }

1 个答案:

答案 0 :(得分:2)

getPath对象上没有GPolygon方法。请参阅GPolygon reference

相反,您需要使用getVertexCount()getVertex(i)

for (var i = 0, I = this.getVertexCount(); i < I; ++i) {
  var xy = this.getVertex(i);
  str += xy.lat() + ', ' + xy.lng() + '<br />';
}