我正在读取JSON文件并格式化GeoJSON
function getAddress(id,search,vagas, next) {
geo.geocode({address:search}, function (results,status)
{
if (status == google.maps.GeocoderStatus.OK) {
$scope.go = false;
var latlng = results[0].geometry.location;
var objSuccess =
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
latlng.lng(), latlng.lat()
]
},
"properties": {
"id": id,
"endereco" : search,
"vagas" : vagas
}
}
]
};
$scope.success.push(objSuccess);
console.log(objSuccess);
$scope.geocodes=true;
$scope.$apply();
}
else {
// === se houver over_query_limit error dá o delay e segue do próximo address
if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
nextAddress--;
console.log("over_query_limit:"+nextAddress);
delay++;
} else {
//alert("Error:"+status);
var objError= {
Id:id,
Endereco: search,
Erro: status
}
$scope.error.push(objError);
if ($scope.error.length >1){
$scope.errors=true;
}
$scope.$apply();
}
}
next();
}
);
}
输出: header 类型featureCollection重复。我仅在添加功能之前和之后需要创建标题。有没有人举过我如何使用JavaScript的示例?
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[
-51.21582910000001,
-30.0331466
]
},
"properties":{
"id":3,
"endereco":"Av. Osvaldo Aranha, n° 632",
"vagas":18
}
}
]
},
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[
-51.2141699,
-30.0338833
]
},
"properties":{
"id":4,
"endereco":"Av. Osvaldo Aranha, n° 806",
"vagas":17
}
}
]
},
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[
-51.21328779999999,
-30.0343426
]
},
"properties":{
"id":5,
"endereco":"Av. Osvaldo Aranha, n° 908",
"vagas":14
}
}
]
},
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[
-51.212449600000014,
-30.0348684
]
},
"properties":{
"id":6,
"endereco":"Av. Osvaldo Aranha, n° 1004",
"vagas":12
}
}
]
},
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"geometry":{
"type":"Point",
"coordinates":[
-51.21169850000001,
-30.0352397
]
},
"properties":{
"id":7,
"endereco":"Av. Osvaldo Aranha, n° 1092",
"vagas":17
}
}
]
},
........
最佳答案
在迭代器之外创建对象,然后首先添加 header :
var objSuccess = {}
var objSuccess["type"] = "FeatureCollection"
var objSuccess["features"] = []
然后为向对象添加新功能,使其成功,以便您的getAddress函数成功返回如下对象:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
latlng.lng(), latlng.lat()
]
},
"properties": {
"id": id,
"endereco" : search,
"vagas" : vagas
}
}
然后运行它,将返回的内容推入objSuccess。
编辑:这已解决,但只是向其他用户澄清,我的意思是将函数的返回值压入objSuccess [“features”]。对于任何困惑,我深表歉意
希望这可以帮助。 :)