首页 > 解决方案 > 计算地点之间的行驶距离

问题描述

我设法使用 Maptiler API (OSMNames) 为表单输入提供了一个自动完成功能(因为我发现 Google Maps API 更令人困惑)。

因此,实际问题来了,我想借助我创建的两个输入中的自动完成功能来获取我输入的两个地方之间的行驶距离。

我正在尝试使用OSRM(开源路由机) API

这是我当前的脚本:

<!--AUTOCOMPLETE-->
<script>
    var autocomplete = new kt.OsmNamesAutocomplete(
    'search1', 'https://geocoder.tilehosting.com/', '#My_Maptiler_API_Code');
</script>
<script>
    var autocomplete = new kt.OsmNamesAutocomplete(
    'search2', 'https://geocoder.tilehosting.com/', '#My_Maptiler_API_Code');
</script>

<!--GET INFO-->
<script>
    function loadXMLDoc() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("result").innerHTML =
            this.responseText;
        }

        if (this.readyState == 4 && this.status == 429) {
            document.getElementById("result").innerHTML =
            "Servidor sobrecargado, inténtelo más tarde."
        }
    };
    xhttp.open("GET", "http://router.project-osrm.org/table/v1/driving/{longitude1},{latitude1};{longitude2},{latitude2}", true);
    xhttp.send();
    }
</script>

首先,我需要inputs借助autocomplete函数从 中获取地点的坐标。

目前,当用户单击列表中的建议位置之一时,只有该name项目被写入input框中。相反,我想获取 GPS 坐标,而不是name,以便我可以使用它们发送 HTTP 请求(下一步)。

单击时正在写入的内容:

当我点击时正在写什么

我下一步需要什么:

我下一步需要什么

顺便说一句,我在其他相关问题中看到了一些邀请使用“ Nominatim ”的答案。正如我所说,我目前正在使用“ OSMNames ”,有什么区别吗?我应该更改我的地理编码器吗?

然后,我还需要在 HTTP GET 请求中获取这些坐标,如代码所示。

最后,我想从OSRM 响应中获取其中一项,即距离。否则,我只会得到整个回应。

我实际上不知道如何执行任何所述步骤,因为我是一名仍在该领域入门的学生。

如果你能在这里帮我一把,那就太好了。

我尽量避免将所有代码放在这里,因为我在阅读时发现它令人困惑,但是如果您出于任何原因需要其余代码,请告诉我!

谢谢你的帮助!:)

标签: javascriptphphtmlopenstreetmaposrm

解决方案


推荐阅读