0

私はGoogleマップ描画ツールv3をいじっています。ユーザーが新しいポリゴンを作成した場合、この例を使用してポリゴンの位置を追跡できるようにしました。

getpaths() ポリゴン Google マップ API

コード:

var ポリゴン = [];

       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());
               });
           }
       });

これは、ユーザーが Polygon を作成する場合には問題ありませんが、Polygon を削除するとどうなるでしょうか? データは引き続き配列に格納されます。ユーザーが保存をクリックしたときに、削除された配列を追跡したり、最後にすべての形状を反復処理したりする方法が見つからないようです。コンソールを見ると、__gm_id: と呼ばれる各形状に割り当てられた一意の ID がある可能性があることがわかりますが、これが追跡する最善の方法であるかどうかはわかりません。

もう 1 つの奇妙な点は、シェイプを編集すると、コードにそうすべきであるという記述がなくても、これらの変更が何らかの形でポリゴン配列に更新されることです。

4

1 に答える 1

1

Google の例は、オブジェクトを削除する方法を示しています。

selectedShape.setMap(null);

削除する代わりに可視性を false にすることで、ポリゴンの最終結果を追跡する方が簡単であることがわかりました。

selectedShape.setOptions({ visible: false });

そうすれば、配列を読み取るときに、それが見えないかどうかを確認できます。

polygons[i].getVisible()

コードビハインドでは、座標を保存するときに必要に応じてデータを処理できます。作成されたものはすべて取得されますが、表示されている形状のみを保存することを選択できます。

于 2013-09-20T19:16:21.567 に答える