关于将坐标阵列转换为JSON的问题



我正在尝试解析数组的存储项目,该数组包含在地图上绘制形状的坐标,例如json对象/字符串:

var polys =[];
google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) {
  coordinates = (polygon.getPath().getArray());
  polys.push(coordinates);
});

我使用此循环将数组转换为JSON数据:

var info = [];
for(var i = 0; i < polys.length; i++){
    info.push({
        "type":"POL",
        "id": i,
        "geometry": polys[i]
    });
}

每件事都很好,但是结果我会得到 "d""e"键的坐标键,为:

[
   {
      "type":"POL",
      "id":0,
      "geometry":[
         {
            "d":49.26870064827097,
            "e":-122.89237976074219
         },
         {
            "d":49.25436113302859,
            "e":-122.9092025756836
         },
         {
            "d":49.24965507167121,
            "e":-122.88551330566406
         }
      ]
   },

您能否让我知道为什么会发生这种情况?由于我要将JSON数据加载到MySQL数据库中,您认为这是继续的好方法吗?

带有 e -and d -properties的对象是 google.maps.LatLng's,必须将它们转换为一个数组:

var info = [];
for(var i = 0; i < polys.length; i++){
    geometry=[];
    for(var j=0;j<polys[i].length;++j){
      geometry.push([polys[i][j].lat(),polys[i][j].lng()]);
    }
    info.push({
        "type":"POL",
        "id": i,
        "geometry": geometry
    });
}

获取编码路径使用以下方式:

var info = [];
for(var i = 0; i < polys.length; i++){
    info.push({
        "type":"POL",
        "id": i,
        "geometry": google.maps.geometry.encoding.encodePath(polys[i])
    });
}

注意:要使用编码时,必须加载几何图,默认情况下不会加载此库

最新更新