我通过maps.data.loadGeoJson()将一个要素集合加载到地图中。不幸的是,我的数据源偶尔会返回一个格式错误的GeoJson对象(功能为null,而不是空数组)抛出InvalidValueError。
该数据的一个例子:
{"type":"FeatureCollection","features":null}
我希望能够捕获此错误,但由于loadGeoJson()是异步调用,因此在抛出异常时我已退出try块。我已阅读(Is it possible to catch exceptions thrown in a JavaScript async callback?)处理此问题的方法是将try / catch块放在回调中。
听起来很合理,但我不确定我应该在try块中设置什么条件。
map.data.loadGeoJson(url ,null,
function(data){
try(what_exactly){
}catch(e){ }
}
);
这是正确的方法,还是我在错误的船上?如果我在错误的船上,哪一个是正确的?
谢谢!
答案 0 :(得分:1)
不使用loadGeoJson
,而是使用addGeoJson
。
- loadGeoJson
- 从URL加载GeoJSON,并将功能添加到集合中。
- 返回值:无
- addGeoJson
- 将GeoJSON功能添加到集合中。为此方法提供已解析的JSON。将返回导入的功能。 如果无法导入GeoJSON,则会引发异常。
- 返回值:数组< Data.Feature>
以下是一个相关的SO question,它提供了有关addGeoJson
的代码实现。
希望这有帮助!