我已经成功地使用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 =
"Server overloaded, please try again later."
}
};
xhttp.open("GET", "http://router.project-osrm.org/table/v1/driving/{longitude1},{latitude1};{longitude2},{latitude2}", true);
xhttp.send();
}
</script>
首先,我需要通过使用autocomplete
函数从inputs
中获取地点的坐标。
当前,当用户点击建议列表中的一个地点时,只有name
项会被写入input
框。相反,我想要得到写有GPS坐标而不是name
的文本,以便我可以用它们来发送HTTP请求(下一步)。
当我点击时正在被写入什么:
接下来我需要什么:
顺便说一下,我在其他相关问题的答案中看到有人邀请使用 "Nominatim"。正如我所说,我目前正在使用 "OSMNames",这有什么区别吗?我应该更改我的地理编码器吗?
然后,我还需要在HTTP GET请求中获取这些坐标,就像代码中显示的那样。
最后,我想从OSRM响应中只获取一个项目,即距离。否则,我将只获得整个响应。
我尽量避免在此处放置所有代码,因为我发现阅读时很混乱,但如果您出于任何原因需要其余代码,请告诉我!