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