我正在读取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”]。对于任何困惑,我深表歉意

希望这可以帮助。 :)

07-24 09:22