2012-12-20 2 views
0

Я хочу сохранить координаты наложения полигонов google в оракуле и отобразить его на следующем сеансе. Существует код:использовать JSON.stringify и JSON.parse для хранения координат полигона в оракуле

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 для синтаксического анализа данных таблицы оракула в 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, в котором я храню координаты каждой вершины многоугольника с помощью этого метода: var geometry = createdShapes [i] .getPath(). GetArray(); –

ответ

2

JSON.stringify() не сохранит оригинальный MVCArray, конструктор отсутствует.

Лучше использовать google.maps.geometry.encoding.encodePath(), чтобы создать сохраняемое значение и декодировать его перед повторным использованием.

+0

Большое спасибо, я думал об использовании latlng(), но ваше решение кажется лучше! Я попробую это завтра. Счастливые праздники! –

Смежные вопросы