我有一个打字项目,我试图得到距离最近的警察局(后来我也添加消防站)。我用的是 typescript
我在网上找到了这个URL:https://router.project-osrm.org/route/v1/driving/${lon},${lat};nearest?annotations=distance&exclude=motorway,toll
但似乎根本不管用。
我在文档中进一步查看,我不确定我应该使用哪个:路线/v1/驾驶或最近的/v1/驾驶。我没有找到一个解决方案,两者都有(?)的。
因此,总的目标是获得我的位置坐标,并获得到最近的警察局和最近的消防站的距离(以公里为单位)。
例如,我还尝试了以下函数:
import axios from "axios";
async function getNearestPoliceStation(
lat: number,
lon: number
): Promise<[number, number]> {
try {
console.log("input lat and lon", lat, lon);
const url2 = `https://nominatim.openstreetmap.org/search?format=json&q=police+station&limit=1&lat=${lat}&lon=${lon}`;
const response2 = await axios.get(url2);
console.log(response2.data[0]);
const nearestPoliceStation = response2.data[0];
if (!nearestPoliceStation) {
return [-1, -1];
}
const lati = parseFloat(nearestPoliceStation.lat);
const longi = parseFloat(nearestPoliceStation.lon);
return [lati, longi];
} catch (error) {
console.error(error);
return [-1, -1];
}
}
但是当我输入49.85349,8.65859(在德国)时,它会找到新泽西州最近的警察局:40.7007047,-75.1719147
一个Python代码也会有帮助。我在Python上尝试了一些测试,使用Google Maps API(而不是TS和OSMR),这也不是太简单。
1条答案
按热度按时间qjp7pelc1#
这里的a jsFiddle demo将在Map上显示警察局和消防局作为标记,当您单击其中一个时,驾驶路线将被绘制为蓝线:
我的JavaScript代码发送以下Overpass API查询来获取具有特定标记的节点:
然后将节点绘制为标记,当您单击其中一个时,将从OSRM服务器请求行驶路线: