先上效果圖
到達某地點后顯示提示語:比如:12:56分駛入康莊大道、左轉駛入xx大道等
<!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><link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css"/><style>html, body, #container {height: 100%;width: 100%;}.input-card .btn{margin-right: 1.2rem;width: 9rem;}.input-card .btn:last-child{margin-right: 0;}</style>
</head>
<body>
<div id="container"></div>
<div class="input-card"><h4>軌跡回放控制</h4><div class="input-item"><input type="button" class="btn" value="開始動畫" id="start" onclick="startAnimation()"/><input type="button" class="btn" value="暫停動畫" id="pause" onclick="pauseAnimation()"/></div><div class="input-item"><input type="button" class="btn" value="繼續動畫" id="resume" onclick="resumeAnimation()"/><input type="button" class="btn" value="停止動畫" id="stop" onclick="stopAnimation()"/></div>
</div>
<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=你的key值"></script>
<script>// JSAPI2.0 使用覆蓋物動畫必須先加載動畫插件AMap.plugin('AMap.MoveAnimation', function(){var marker, lineArr = [[116.478935,39.997761],[116.478939,39.997825],[116.478912,39.998549],[116.478912,39.998549],[116.478998,39.998555],[116.478998,39.998555],[116.479282,39.99856],[116.479658,39.998528],[116.480151,39.998453],[116.480784,39.998302],[116.480784,39.998302],[116.481149,39.998184],[116.481573,39.997997],[116.481863,39.997846],[116.482072,39.997718],[116.482362,39.997718],[116.483633,39.998935],[116.48367,39.998968],[116.484648,39.999861]];var map = new AMap.Map("container", {resizeEnable: true,center: [116.397428, 39.90923],zoom: 26,pitch: 55.94919957310569,rotation: 0,viewMode: '3D', //開啟3D視圖,默認為關閉buildingAnimation: true, //樓塊出現是否帶動畫zooms:[2,26],});marker = new AMap.Marker({map: map,position: [116.478935,39.997761],icon: "https://a.amap.com/jsapi_demos/static/demo-center-v2/car.png",offset: new AMap.Pixel(-13, -26),});var pathArr = [{ position: new AMap.LngLat(116.478935,39.997761),time:"到達時間1"},{ position: new AMap.LngLat(116.478939,39.997825),time:"到達時間2"},{ position: new AMap.LngLat(116.478912,39.998549),time:"到達時間3"},{ position: new AMap.LngLat(116.478998,39.998555),time:"到達時間4"},{ position: new AMap.LngLat(116.479282,39.99856),time:"到達時間5"},{ position: new AMap.LngLat(116.484648,39.999861),time:"到達時間6"},];var infoDiv = document.createElement('div');infoDiv.id = 'info';infoDiv.style.position ='fixed';infoDiv.style.left ='50%';infoDiv.style.top='0px';infoDiv.style.zIndex=100;infoDiv.style.background ='#fff';infoDiv.style.width='240px';infoDiv.style.height='50px';document.body.appendChild(infoDiv);// 繪制軌跡var polyline = new AMap.Polyline({map: map,path: lineArr,showDir:true,strokeColor: "#28F", //線顏色// strokeOpacity: 1, //線透明度strokeWeight: 6, //線寬// strokeStyle: "solid" //線樣式});var passedPolyline = new AMap.Polyline({map: map,strokeColor: "#AF5", //線顏色strokeWeight: 6, //線寬});//已知經過的最近時間點var lastTimedPointIndex=-1;marker.on('moving', function (e) {passedPolyline.setPath(e.passedPath);map.setCenter(e.target.getPosition(),true)// 設置旋轉角map.setRotation(-e.target.getOrientation());var position = e.passedPath[e.passedPath.length-1];var timedPoint = pathArr.find(function(p, index){var pointPassed = new AMap.LngLat(position.lng,position.lat).distance(p.position)<4;// 判斷兩點之間的直線距離是否小于4米if(pointPassed)lastTimedPointIndex = index;return pointPassed;})//如果找到有時間的點,并且該點是新經過的點,更新infoDivif(timedPoint && lastTimedPointIndex>-1){console.log(timedPoint.time)// 顯示時間信息infoDiv.innerHTML = timedPoint.time;}});map.setFitView();window.startAnimation = function startAnimation () {marker.moveAlong(lineArr, {// 每一段的時長duration: 500,//可根據實際采集時間間隔設置// JSAPI2.0 是否延道路自動設置角度在 moveAlong 里設置autoRotation: true,});};window.pauseAnimation = function () {marker.pauseMove();};window.resumeAnimation = function () {marker.resumeMove();};window.stopAnimation = function () {marker.stopMove();};});
</script>
</body>
</html>