如何在将geoJSON加载到数据层时捕获异常

时间:2016-08-31 20:09:08

标签: javascript google-maps-api-3

我通过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){ }
    }
);

这是正确的方法,还是我在错误的船上?如果我在错误的船上,哪一个是正确的?

谢谢!

1 个答案:

答案 0 :(得分:1)

不使用loadGeoJson,而是使用addGeoJson

  
      
  • loadGeoJson      
        
    • 从URL加载GeoJSON,并将功能添加到集合中。
    •   
    • 返回值:无
    •   
  •   
  • addGeoJson      
        
    • 将GeoJSON功能添加到集合中。为此方法提供已解析的JSON。将返回导入的功能。 如果无法导入GeoJSON,则会引发异常
    •   
    • 返回值:数组< Data.Feature>
    •   
  •   

以下是一个相关的SO question,它提供了有关addGeoJson的代码实现。

希望这有帮助!