【问题标题】:Meteor Parse JSON Geo DateMeteor Parse JSON 地理日期
【发布时间】:2016-09-07 11:43:50
【问题描述】:

目前正在开展一个项目,使用 Leaflet 和 Data Science Toolkit (DSTK) 在 Meteor 中绘制地址以进行地理编码。发送带有三个地址的 curl POST 请求,我得到以下数据返回:

     {    "901 North Jackson Street, Junction City KS 66441": {
          "country_code3": "USA",
          "latitude": 39.031397,
          "country_name": "United States",
          "longitude": -96.837184,
          "street_address": "901 N Jackson St",
          "region": "KS",
          "confidence": 1.0,
          "street_number": "901",
          "locality": "Junction City",
          "street_name": "N Jackson St",
          "fips_county": "20061",
          "country_code": "US"    },    
"300 South Parkside Drive, Colorado Springs CO 80901": {
          "country_code3": "USA",
          "latitude": 38.828775,
          "country_name": "United States",
          "longitude": -104.79034,
          "street_address": "300 S Parkside Dr",
          "region": "CO",
          "confidence": 0.805,
          "street_number": "300",
          "locality": "Colorado Springs",
          "street_name": "S Parkside Dr",
          "fips_county": "08041",
          "country_code": "US"    },    
"1412 Kensington Avenue, Kansas City MO 64127": {
          "country_code3": "USA",
          "latitude": 39.095286,
          "country_name": "United States",
          "longitude": -94.530828,
          "street_address": "1412 Kensington Ave",
          "region": "MO",
          "confidence": 1.0,
          "street_number": "1412",
          "locality": "Kansas City",
          "street_name": "Kensington Ave",
          "fips_county": "29095",
          "country_code": "US"    } }

我要做的是遍历这些结果并以 Geojson 格式插入 mongodb。使用上面的最后一个地址,它将如下所示:

var geojsonFeature = {
"type": "Feature",
"properties": {
    "name": "1412 Kensington Avenue, Kansas City MO 64127",
    "popupContent": "1412 Kensington Avenue, Kansas City MO 64127"
},
"geometry": {
    "type": "Point",
    "coordinates": [-94.530828, 39.095286]
}

};

非常感谢任何建议。

【问题讨论】:

    标签: json mongodb meteor


    【解决方案1】:

    假设a 是您从 POST 中获得的对象。它有 3 个顶级键。 You can iterate over thesefor (var property in a){} - 这些顶级密钥中的每一个都将作为 string 返回。然后,您可以使用该字符串通过括号符号 a[property] 对整个对象进行索引,如下所示:

    let geojsonFeature = {};
    for (var property in a){
      if ( a.hasOwnProperty(property) ){
        geojsonFeature = {
          "type": "Feature",
          "properties": {
            "name": property,
            "popupContent": property
          },
          "geometry": {
            "type": "Point",
            "coordinates": [ a[property].longitude a[property].latitude ]
          }
        };
        myGeoJsonFeatures.insert(geojsonFeature); // save geojsonFeature to your collection
      }
    }
    

    【讨论】:

    • Michel - 非常感谢,工作完美!解释和链接对理解也很有帮助。
    • 所以现在我遇到了与上述问题相关的另一个问题。如果我发送带有三个地址的 curl 请求进行地理编码并将返回的 json 数据输出到控制台,我会看到所有三个地址。但是,如果我对 mongodb 进行插入,它只会显示返回的第一个地理编码地址。所以在上面的解决方案中,如果我使用myGeoJsonFeatures.insert(geojsonFeature),只有第一个地理编码地址会插入到 mongo 中。如果改为使用console.log(geojsonFeature),则会显示所有三个地理编码地址。
    • 我在 geojson curl 请求中用wrapAsync 解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2012-06-07
    相关资源
    最近更新 更多