阅读 Json 并在 Javascript 中格式化为 GeoJSON
Read Json and format as GeoJSON in Javascript
我正在读取 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 重复。我需要在添加功能之前和之后创建 header。 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
}
}
]
},
........
在迭代器之外创建 object 并首先添加 header:
var objSuccess = {}
var objSuccess["type"] = "FeatureCollection"
var objSuccess["features"] = []
然后,为了向 object 添加新功能,使您的 getAddress 函数 return 成为一个像这样的 object 成功时:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
latlng.lng(), latlng.lat()
]
},
"properties": {
"id": id,
"endereco" : search,
"vagas" : vagas
}
}
然后 运行 将其 return 推入 objSuccess。
编辑:这已经解决,但只是向其他用户说明我的意思是将函数的 return 值推送到 objSuccess["features"]。对于任何混淆,我深表歉意
希望这对您有所帮助。 :)
我正在读取 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 重复。我需要在添加功能之前和之后创建 header。 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
}
}
]
},
........
在迭代器之外创建 object 并首先添加 header:
var objSuccess = {}
var objSuccess["type"] = "FeatureCollection"
var objSuccess["features"] = []
然后,为了向 object 添加新功能,使您的 getAddress 函数 return 成为一个像这样的 object 成功时:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
latlng.lng(), latlng.lat()
]
},
"properties": {
"id": id,
"endereco" : search,
"vagas" : vagas
}
}
然后 运行 将其 return 推入 objSuccess。
编辑:这已经解决,但只是向其他用户说明我的意思是将函数的 return 值推送到 objSuccess["features"]。对于任何混淆,我深表歉意
希望这对您有所帮助。 :)