我正在做一个学校项目,我必须创建一个网页,我应该能够使用传单创建一个路线。我也有一个JSON文件与一些自行车码头。我需要找到离我旅行的起点最近的码头和离路线的终点最近的码头。
这是我目前为止的代码:
<script>
var map_var = L.map('map_id').setView([40.72730240765651, -73.9939667324035], 16);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map_var);
var startPosition = L.latLng();
var endPosition = L.latLng();
L.Routing.control({
waypoints: [
startPosition,
endPosition,
],
routeWhileDragging: true,
collapsible: true,
geocoder: L.Control.Geocoder.nominatim()
}).addTo(map_var);
$.getJSON("citybike.json", function (json1) {
for (var i = 0; i < json1.stationBeanList.length; i++) {
var place = json1.stationBeanList[i];
coordinate = [place.latitude, place.longitude];
/*var marker = L.marker(coordinate);
marker.addTo(map_var).bindPopup(`<b>${place.stAddress1}</b><br>Status: ${place.statusValue}<br>Bici disponibili: ${place.availableBikes}<br>Docks disponibili: ${place.availableDocks}`);*/
}
});
</script>
我的JSON文件是这样的:
{
"stationBeanList": [
{
"id": 72,
"stationName": "W 52 St & 11 Ave",
"availableDocks": 32,
"totalDocks": 39,
"latitude": 40.76727216,
"longitude": -73.99392888,
"statusValue": "In Service",
"statusKey": 1,
"availableBikes": 6,
"stAddress1": "W 52 St & 11 Ave",
"stAddress2": "",
"city": "",
"postalCode": "",
"location": "",
"altitude": "",
"testStation": false,
"lastCommunicationTime": null,
"landMark": ""
}
}
谢谢你的帮助!
1条答案
按热度按时间x6yk4ghg1#
您需要迭代数组中的每个站点并返回-给定一组起始lat/lng坐标,以及站点自己的lat/lng坐标集-两对之间的距离。我用的是this algorithm to good effect。
为了方便起见,我已经将站点数据缩减到最小,并引入了几个附加站点。我给每个人都编了坐标。