我们写的路径规划,是根据用户点击中国地图的次数为准的,进入页面,鼠标点击一次,就是需要规划的起点。点击第二次,就是终点,当点击完两次后,路径规划自动执行。
下面是详细代码,只需改变代码中key与密钥的值,改变成自己请求的值即可。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>位置经纬度 + 驾车规划路线</title>
<style type="text/css">
html,
body,
#container {
width: 100%;
height: 100%;
}
#panel {
position: fixed;
background-color: white;
max-height: 90%;
overflow-y: auto;
top: 10px;
right: 10px;
width: 280px;
}
#panel .amap-call {
background-color: #009cf9;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
#panel .amap-lib-driving {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
overflow: hidden;
}
.map {
height: 100%;
width: 100%;
float: left;
}
</style>
<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<script type="text/javascript" src="https://cache.amap.com/lbs/static/addToolbar.js"></script>
</head>
<body>
<!-- 结构 -->
<div id="container" class="map"></div>
<div id="panel"></div>
<div class="input-card">
<h4>左击获取经纬度:</h4>
<div class="input-item">
<input type="text" readonly="true" id="lnglat">
</div>
</div>
<!-- 密钥 -->
<script type="text/javascript">
window._AMapSecurityConfig = {
securityJsCode: "密钥",
};
</script>
<!-- key -->
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=key的值&plugin=AMap.Driving">
</script>
<script type="text/javascript">
//基本地图加载
// 创建一个新的AMap地图实例,并将其绑定到页面上id为"container"的div元素上
var map = new AMap.Map("container", {
// 允许地图自动调整大小以适应其容器的大小变化
resizeEnable: true,
center: [116.397428, 39.90923], //地图中心点
zoom: 13 //地图显示的缩放级别
});
// 声明变量为起点和终点
let start, end;
//为地图注册click事件获取鼠标点击出的经纬度坐标
let clickCount = 0;
//构造路线导航类
var driving = new AMap.Driving({
map: map,
panel: "panel"
});
// 给map绑定点击事件
map.on('click', function(e) {
clickCount++; // 每次点击时增加点击次数
// 判断奇偶数,当为奇数时,就作为起点
if (clickCount % 2 == 1) {
// 第一次点击,设置起点
document.getElementById("lnglat").value = e.lnglat.getLng(), e.lnglat.getLat();
start = new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
console.log(start);
// 否咋就是为偶数时 作为终点
} else {
// 第二次点击,设置终点并规划路线
document.getElementById("lnglat").value = e.lnglat.getLng(), e.lnglat.getLat();
end = new AMap.LngLat(e.lnglat.getLng(), e.lnglat.getLat());
console.log(end);
// 根据起终点经纬度规划驾车导航路线
driving.search(start, end, function(status,
result) {
// result 即是对应的驾车导航信息,相关数据结构文档请参考 https://lbs.amap.com/api/javascript-api/reference/route-search#m_DrivingResult
if (status === 'complete') {
log.success('绘制驾车路线完成')
} else {
log.error('获取驾车数据失败:' + result)
}
});
}
});
</script>
</body>
</html>