2017-07-18 193 views
-1

我正在處理一個需要通過jQuery ajax調用從我的.NET API中提取GeoJSON的項目。 當我嘗試將數據分配給一個變量,然後將其加載到谷歌地圖這樣的:當從API中提取時出現無效的GeoJSON錯誤

map.data.addGeoJson(data); 

它拋出一個錯誤說:

JS:70InvalidValueError:不是一個功能或的FeatureCollection

如果我要採取的API給出了同樣的答覆,並直接粘貼到HTML文件(這樣分配相同的值到JS變量數據),它工作正常,並在地圖渲染

我的猜測可能是編碼問題?我甚至將回應輸出到一個div,複製該div的值,粘貼它,並且它工作。它似乎只是當我直接分配API的值,它會引發錯誤。

任何想法我可以做什麼來格式化或讓它正常工作?當腳本直接在JavaScript中寫出時,腳本是否會「打破」格式化的b/c?

非常感謝!

編輯: 我從API回來的數據已經被包裹在一個要素集合:

{ 「類型」: 「的FeatureCollection」, 「功能」:[{ 「ID」:5280, 「type」:「Feature」,「geometry」:{「type」:「MultiPolygon」,「coordinates」:[[[73.431919,40.989009],[-73.423452,40.990793],[-73.398054,40.996147] [-73.38958,40.99793],[-73.38958,40.99903],[-73.383594,40.99903],[-73.38358,40.99903],[-73.38408,40.99993],[-73.384029,40.999293],[ [-73.378172,41.000097],[-73.377449,4.19000289],[-73.375282,4.19000867],[-73.37456,41.00106],[-73.358967,41.004214],[-73.312189] ,41.013675],[-7 [-73.295532,41.017045],[-73.292437,41.017671],[-73.291406,41.01788],[-73.288203,41.018528],[-73.278594,41.020471],[-73.275543,41.020471],[-73.275539 ,[-73.272019,41.021556],[-73.270225,41.022069],[-73.261288,41.023711],[-73.254724,41.024916],[-73.249557,41.025866],[-73.24916] 41.025957],[-73.247968,41.026233],[-73.247572,41.026326],[-73.246328,41.026614],[-73.242596,41.027478],[-73.241353,41.027767], ... 結束

只是一個提醒,如果我將輸出直接粘貼到變量中,它就可以工作。如果我的變量等於API的響應,則失敗。

回答

-1

退房this GeoJSON的頁面,它指出

addGeoJson(geoJson:Object, options?:Data.GeoJsonOptions)

Adds GeoJSON features to the collection. Give this method a parsed JSON. The imported features are returned. Throws an exception if the GeoJSON could not be imported.

this SO問題在那裏接受的答案被包裝的對象,像這樣this GoogleMapsAPI頁:

{ "type": "FeatureCollection", 
"features": [ 
    { "type": "Feature", 
    "geometry": /** paste here the complete output of 
        http://mapit.mysociety.org/area/11804.geojson **/ 
    } 
] 
} 

編輯: 試試這個

var geojson = JSON.parse(data); 
map.data.addGeoJson(geojson); 
+0

@ts暗中感謝這些鏈接,偉大的發現。任何想法爲什麼我的代碼不會工作,但?看來我已經把它們包裝在一個功能集合中(參見上面的我的東西)。除非你認爲我不能將它包裝在代碼的特徵集合中,而我實際上只需要返回沒有特徵的幾何體呢? –

+0

你確定解析你得到的數據嗎?如果你嘗試 var geojson = JSON.parse(cave); map.data.addGeoJson(geojson); –

+0

就是這樣!你說對了!謝謝:)任何機會,你可以更新你的答案只是提到這個,讓別人可以看到它?謝謝! –

相關問題