关于将坐标数组转换为JSON的问题

时间:2014-03-06 22:11:29

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

我正在尝试将包含绘图形状坐标的数组的存储项解析为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数据库中,您认为这是一个很好的继续吗?

1 个答案:

答案 0 :(得分:1)

具有e - 和d - 属性的对象为google.maps.LatLng,您必须将它们转换为数组:

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])
    });
}

注意:如果要使用编码,则必须加载geometry-library,默认情况下不加载此库