【问题标题】:use JSON.stringify and JSON.parse to store polygon coordinates into oracle使用 JSON.stringify 和 JSON.parse 将多边形坐标存储到 oracle
【发布时间】:2012-12-08 12:52:45
【问题描述】:

我想将谷歌地图多边形覆盖的坐标存储到 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 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
    });

不幸的是,它不起作用。我不能用这个新数组重建多边形。你能告诉我如何以这种方式重建多边形吗?

【问题讨论】:

  • 你的问题是.....?
  • 您确定geometry 是您认为的那样吗?它是一个包含 JSON 的字符串吗?什么错误?
  • geometry 是我使用此方法存储多边形每个顶点坐标的变量: var geometry = createdShapes[i].getPath().getArray();
  • 我的意思是在addPolygons函数中。

标签: javascript json google-maps-api-3


【解决方案1】:

JSON.stringify() 不会保留原来的 MVCArray,构造函数丢失。

您最好使用google.maps.geometry.encoding.encodePath() 创建一个可存储的值并在重新使用之前对其进行解码。

【讨论】:

  • 非常感谢,我正在考虑使用 latlng() 但您的解决方案似乎更好!我明天试试。圣日快乐!
猜你喜欢
  • 2018-11-02
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 2016-10-09
相关资源
最近更新 更多