2012-02-08 183 views
0

我在google maps api上有点初学者。我设法让用户在地图上绘制多边形,然后我想获取绘制的多边形上的坐标。谷歌地图api v2获取多边形坐标

我已经使用下面的代码段,但它给我的下面的错误未捕获的类型错误:对象[对象的对象]无方法“的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); 
      }); 
      }); 
    } 
代码
+0

你说你在使用V3,但你的代码看起来可疑V2ish(GPolygon,GEvent)。你有没有发布你的所有代码,我们可以看看?也许在JSFiddle上? – 2012-02-08 20:59:00

回答

2

GPolygon对象没有getPath方法。请参阅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 />'; 
}