0

我一直在玩弄谷歌地图绘图工具 v3。如果用户创建了一个新多边形,我使用此示例来跟踪多边形的位置:

getpaths() 多边形谷歌地图 API

代码:

可变多边形 = [];

       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:,但我不确定这是否是跟踪它的最佳方法。

另一个奇怪的事情是,当您编辑一个形状时,这些更改会以某种方式更新到多边形数组,即使代码中没有任何内容表明它应该这样做。

4

1 回答 1

1

谷歌示例显示删除对象的方法是使用:

selectedShape.setMap(null);

我发现通过使可见性为假而不是删除来更容易跟踪多边形最终结果:

selectedShape.setOptions({ visible: false });

这样,在读取数组时,您可以检查它是否不可见:

polygons[i].getVisible()

在代码隐藏中,您可以在保存坐标时根据需要处理数据。您将获得制作的所有内容,但可以选择仅保存可见的形状。

于 2013-09-20T19:16:21.567 回答