2012-12-20 67 views
0

我想將google maps多邊形覆蓋的座標存儲到oracle中並在下一個會話中顯示它。還有就是代碼:使用JSON.stringify和JSON.parse將多邊形座標存儲到oracle中

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的變種,我用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 
    }); 

不幸的是,它不工作。我不能用這個新陣列重建多邊形。你能告訴我如何重建多邊形嗎?

+0

而你的問題是.....? –

+0

你確定'geometry'是你認爲的嗎?它是一個包含JSON的字符串嗎?什麼是錯誤? –

+0

geometry是我用這個方法存儲多邊形每個頂點座標的變量:var geometry = createdShapes [i] .getPath()。getArray(); –

回答

2

JSON.stringify()不會保留原始MVCArray,構造函數丟失。

您最好使用google.maps.geometry.encoding.encodePath()創建一個可存儲的值並在重新使用它之前對其進行解碼。

+0

非常感謝你,我正在考慮使用latlng(),但你的解決方案似乎更好!我明天會嘗試。 Happy Holydays! –