使用外部API的传单解析GeoJSON

时间:2015-09-16 17:50:15

标签: javascript json api leaflet geojson

我尝试使用外部API检索GeoJSON数据并最终在地图上显示数据。我使用传单库作为地图,我面临的问题是我从这个API获得的数据似乎很好(即如果我从console.log获取数据然后直接在" L.geoJson(输入什么)"它有效)但出于某种原因,如果我尝试使用它的对象,它就无法工作。

modal_update.hide()

由于数据看起来不错(我在http://geojsonlint.com/上进行了测试),不太确定导致问题的是什么。

感谢您的帮助, 于连

1 个答案:

答案 0 :(得分:1)

您收到的数据类型是一个字符串。 L.GeoJSON需要一个GeoJSON对象。您可以使用JSON.parse方法将字符串转换为对象:

  

JSON.parse()方法将字符串解析为JSON。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

L.geoJson(JSON.parse(this.response)).addTo(map);

接下来,您需要知道XMLhttpRequest是异步的。请参阅:Easy to understand definition of "asynchronous event"?简而言之,在调用L.GeoJSON时,oReq.send可能还没有准备就绪。这就是eventlistener的用武之地。当reqListener完成接收时,它会调用oReq.send方法。您需要在L.GeoJSON方法中创建reqListener图层,如下所示:

function reqListener () {
    L.geoJson(JSON.parse(this.response)).addTo(map);
}

工作示例:http://plnkr.co/edit/ODe622?p=preview