我正在尝试解析数组的存储项目,该数组包含在地图上绘制形状的坐标,例如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])
});
}
注意:要使用编码时,必须加载几何图,默认情况下不会加载此库