我一直在玩弄谷歌地图绘图工具 v3。如果用户创建了一个新多边形,我使用此示例来跟踪多边形的位置:
代码:
可变多边形 = [];
google.maps.event.addDomListener(drawingManager, 'polygoncomplete', function (polygon) {
polygons.push(polygon);
console.log("polygon complete");
});
google.maps.event.addDomListener(savebutton, 'click', function () {
document.getElementById("savedatapolygon").value = "";
console.log(polygons.length);
for (var i = 0; i < polygons.length; i++) {
var polygonBounds = polygons[i].getPath();
// Iterate over the polygonBounds vertices.
var PolyNum = i
console.log(PolyNum);
polygonBounds.forEach(function (xy, i) {
console.log('Coordinate: ' + PolyNum + ':' + i + '<br>' + xy.lat() + ',' + xy.lng());
});
}
});
当用户创建多边形时这很好,但如果他们删除多边形怎么办?数据仍然存储在数组中。我似乎找不到一种方法来跟踪哪个数组被删除,或者在用户单击保存时让它遍历所有形状。通过控制台查看,我可以看到可能为每个形状分配了一个唯一的 ID,称为 __gm_id:,但我不确定这是否是跟踪它的最佳方法。
另一个奇怪的事情是,当您编辑一个形状时,这些更改会以某种方式更新到多边形数组,即使代码中没有任何内容表明它应该这样做。