在Javascript中对Overpass API的数据使用osmtogeojson

问题描述 投票:0回答:1

[好,是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);
            }
        };
    }

希望这只是我这次忘记了什么……提前谢谢。

javascript openstreetmap geojson
1个回答
0
投票

当我使用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");
© www.soinside.com 2019 - 2024. All rights reserved.