代码拉取完成,页面将自动刷新
同步操作将从 无限十三年/地铁换乘路线查询 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="bootstrap.css">
<style type="text/css">
.btn-container {
display: flex;
justify-content: space-around;
}
</style>
<title>Dijkstra</title>
</head>
<body>
<h1 style="text-align: center;margin-bottom: 60px;">Dijkstra算法地铁寻路演示</h1>
<div class="container">
<div class="row">
<div class="col-md-6">
<h2>起点站</h2>
</div>
<div class="col-md-6">
<h2>终点站</h2>
</div>
</div>
<div class="row">
<div class="col-md-3">
<select id="start-line-select" class="form-control"></select>
</div>
<div class="col-md-3">
<select id="start-station-select" class="form-control"></select>
</div>
<div class="col-md-3">
<select id="end-line-select" class="form-control"></select>
</div>
<div class="col-md-3">
<select id="end-station-select" class="form-control"></select>
</div>
</div>
<div class="row btn-container mt-5">
<button class="btn btn-primary" id="search-route">查询</button>
</div>
<div id="path-search-result"></div>
</div>
</body>
</html>
<script type="module">
import data from './test_data.js'
import Dijkstra from './js/Dijkstra.js'
const startLineSelect = document.getElementById('start-line-select')
const startStationSelect = document.getElementById('start-station-select')
const endLineSelect = document.getElementById('end-line-select')
const endStationSelect = document.getElementById('end-station-select')
let lineOptions = '<option disabled selected>请选择</option>'
const lineMap = new Map()
data.forEach(each => {
lineOptions += `<option value="${each['name']}">${each['name']}</option>`
lineMap.set(each['name'], each['stations'])
})
startLineSelect.innerHTML = lineOptions
endLineSelect.innerHTML = lineOptions
function onChange(e) {
const stations = lineMap.get(this.value)
let stationOptions = ''
stations.forEach(item => {
stationOptions += `<option value="${item}">${item}</option>`
})
if(e.target.id == 'start-line-select') {
startStationSelect.innerHTML = stationOptions
} else {
endStationSelect.innerHTML = stationOptions
}
}
startLineSelect.onchange = onChange
endLineSelect.onchange = onChange
Dijkstra.initData(data)
document.getElementById('search-route').onclick = () => {
const startStation = startStationSelect.value
const endStation = endStationSelect.value
const pathList = Dijkstra.searchPath(startStation, endStation)
console.log(JSON.stringify(pathList))
if ((pathList.length == 1 && pathList[0].distance == 9999) || pathList.length == 0) {
document.getElementById("path-search-result").innerHTML = "未查询到路线"
return
}
let innerHTML = ''
pathList.forEach(path => {
innerHTML += `<h3>${path.lineName}</h3>`
innerHTML += `<p>${path.stationList.join("--->")}</p>`
})
document.getElementById("path-search-result").innerHTML = innerHTML
}
</script>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。