2016-08-31 32 views
0

我通過maps.data.loadGeoJson()將要素集合加載到地圖中。不幸的是,我的數據源偶爾會返回格式錯誤的GeoJson對象(要素爲null,而不是空數組),並拋出InvalidValueError。如何在將geoJSON加載到數據層時捕獲異常

數據的一個例子:

{"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

而不是使用loadGeoJson,請使用addGeoJson

  • loadGeoJson從URL
    • 加載GeoJSON的,並增加了功能集合。
    • 返回值:無
  • addGeoJson
    • 再添GeoJSON的功能來收集。給這個方法一個解析的JSON。導入的功能被返回。 如果GeoJSON無法導入,則會引發異常
    • 返回值:陣列< Data.Feature>

這裏是一個相關SO question,提供了一個代碼實現大約addGeoJson

希望這會有所幫助!

+0

這是一個更多的工作,但它做到了! – jerome