当从API中提取时出现无效的GeoJSON错误

问题描述:

我正在处理一个需要通过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的响应,则失败。

退房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

就是这样!你说对了!谢谢:)任何机会,你可以更新你的答案只是提到这个,让别人可以看到它?谢谢! –