我设法通过Maptiler API(OSMNames)为表单输入提供了自动完成功能(因为我发现Google Maps API更加令人困惑)。
所以这是一个实际的问题,我想借助我创建的两个输入中的自动完成功能,获得我输入的两个地方之间的行车距离。
我正在尝试使用OSRM (Open Source Routing Machine) 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 response中获取距离中的一项。否则,我将得到整个答复。
由于我是一名仍在该领域入门的学生,所以我实际上不知道如何执行任何所述步骤。
如果您能在这里帮助我,那将是很好的。
我尽量避免将所有代码放在此处,因为我在阅读时会感到困惑,但是如果您出于任何原因需要其余代码,请告诉我!
感谢您的帮助! :)