[好,是osmtogeojson的另一个(小,我猜)问题...因此,基本上,我需要通过Overpass API从openstreetmap下载数据,但格式为geojson。我不太习惯HTTPS请求和响应,所以我猜想我在使用osmtogeojson和使用osmtogeojson之间错过了一些东西:
osmtogeojson.js:1 Uncaught TypeError: Cannot read property 'length' of undefined
at osmtogeojson.js:1
at i (osmtogeojson.js:1)
at XMLHttpRequest.xhr.onload (map_common.js:184)
带有以下测试代码(xml数据似乎正确,当我使用osmtogeojson测试页时,它在geojson中正确翻译了。
function updateData(sourcename){
var url = "https://overpass-api.de/api/interpreter?data=node[name=\"Châtenay-Malabry\"];out;"
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.timeout = 6000;
try{
xhr.send(null);
}
catch (error){
alert(error);
}
xhr.ontimeout = function(){
console.log("time out !");
};
xhr.onload = function(){
if (xhr.readyState === 4 && xhr.status===200){
var out = xhr.response;
console.log(out);
var out_geojson = osmtogeojson(out);
}
else{
console.log(xhr.status);
}
};
}
希望这只是我这次忘记了什么……提前谢谢。
当我使用response.data时,我使用axios进行呼叫时遇到了相同的错误您必须使用响应的xml。比它对我来说还好。
axios.get(overpassUrl).then(response => {
var resultAsGeojson = osmtogeojson(response.request.responseXML);
如果XMLHttpRequest没有xml响应,则必须解析对xml的响应。
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");