0

Google マップのポリゴン オーバーレイの座標をオラクルに保存し、次のセッションで表示したいと考えています。コードがあります:

function savePolygons(){
    $.post('oracle_deletePolygons.php');
    for (var i = 0; i < createdShapes.length; i++){
        var nom_zone  = escape(document.getElementById('nom_zone_' + createdShapes[i].id).value);
        var couleur = escape(createdShapes[i].fillColor);
        var code_cs = escape('711');
        var shapeid_export = escape(createdShapes[i].id);
        var geometry = createdShapes[i].getPath().getArray();
        geometry = JSON.stringify(geometry);
        var url1 = "oracle_savePolygons.php?nom_zone=" + nom_zone + "&couleur=" + couleur + "&code_cs=" + code_cs + "&shapeid_export=" + shapeid_export + "&geometry=" + geometry;
        $.get(url1);
    }   
}

JSON.stringify を使用して、これを返すポリゴンのパス配列をテキストに変換します。

[{"Ya":53.4357192066942,"Za":-75.82763671875},{"Ya":52.40241887397331,"Za":-77.3876953125},{"Ya":51.781435604431195,"Za":-74.0478515625}]

php を使用して oracle テーブルのデータを解析して javascript var にした後、JSON.parse を使用して文字列を座標の配列に変換し、ポリゴンを再構築します。

function addPolygons(shapeId_import, nom_zone, couleur, geometry){
    geometry = JSON.parse(geometry);
    var newPolygon = new google.maps.Polygon({
        paths: geometry,
        fillColor: couleur,
        fillOpacity: 0.45,
        strokeWeight: 1,
        editable: false,
        shapeid: shapeId_import,
        map:map
    });

残念ながら、それは機能していません。この新しい配列でポリゴンを再構築できません。ポリゴンを再構築する方法を教えてください。

4

1 に答える 1

2

JSON.stringify() は元の MVCArray を保持しません。コンストラクターがありません。

google.maps.geometry.encoding.encodePath()保存可能な値を作成し、再利用する前にデコードすることをお勧めします。

于 2012-12-20T23:29:33.947 に答える