From 0193e3a62209bd500b9b5184bffc331e19f3a388 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 14 一月 2025 20:31:46 +0800 Subject: [PATCH] 补充 --- ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html | 204 ++++++++++++++++++++++++- ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html | 14 ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js | 218 ++++++++++++++++++-------- 3 files changed, 350 insertions(+), 86 deletions(-) diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html index db071f9..2f1be4a 100644 --- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html +++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_edit.html @@ -1,17 +1,49 @@ @layout("/common/_container.html"){ <style type="text/css"> - html, body, #container { + body, + html { + width: 100%; + height: 100%; + margin: 0; + } + + #allmap { height: 100%; width: 100%; } - .input-card .btn{ - margin-right: 1.2rem; - width: 9rem; + ul li { + list-style: none; } - .input-card .btn:last-child{ - margin-right: 0; + .btn-wrap { + z-index: 999; + position: fixed; + bottom: 3.5rem; + margin-left: 3rem; + padding: 1rem 1rem; + border-radius: .25rem; + background-color: #fff; + box-shadow: 0 2px 6px 0 rgba(27, 142, 236, 0.5); + } + + .btn { + width: 75px; + height: 30px; + float: left; + background-color: #fff; + color: rgba(27, 142, 236, 1); + font-size: 14px; + border: 1px solid rgba(27, 142, 236, 1); + border-radius: 5px; + margin: 0 5px; + text-align: center; + line-height: 30px; + } + + .btn:hover { + background-color: rgba(27, 142, 236, 0.8); + color: #fff; } </style> <div class="ibox float-e-margins"> @@ -76,7 +108,7 @@ </div> <div class="row"> <div class="col-sm-10"> - <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div> <div class="input-card" style="margin-left: 50px;"> <h4>轨迹回放控制</h4> <div class="input-item"> @@ -93,11 +125,161 @@ </div> </div> - </div> </div> -<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> -<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=3mHKIXMArjgIkgADzOlTYp4XssNSNkwr"></script> -<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script> +<script src="${ctxPath}/static/js/track1.js"></script> +<script src="${ctxPath}/static/js/track2.js"></script> +<script src="${ctxPath}/static/js/track3.js"></script> +<script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script> <script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script> +<script> + var map = new BMapGL.Map('allmap', { + style: 'grayed-out', + displayOptions: { + indoor: false, + poiText: false, + poiIcon: false, + building: false, + } + }); + var point = new BMapGL.Point(demo_data[0][0], demo_data[0][1]); + + map.centerAndZoom(point, 18); + map.enableScrollWheelZoom(true); + map.setTilt(35); + + var track = new Track.View(map, { + lineLayerOptions: { + style: { + strokeWeight: 8, + strokeLineJoin: 'round', + strokeLineCap: 'round' + }, + } + }); + + var trackData = []; + var colorOffset = []; + for (var item of demo_data) { + var point = new BMapGL.Point(item[0], item[1]); + var trackPoint = new Track.TrackPoint(point); + trackData.push(trackPoint); + // 不同速度区间对应颜色 + var choose = [0.9, 0.5, 0.1]; + var color = choose[Math.floor(Math.random() * choose.length)]; + colorOffset.push(color); + } + var startMarker = new BMapGL.Marker(trackData[0].getPoint(), { + icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/start.png', new BMapGL.Size(25, 40)), + offset: new BMapGL.Size(0, -16), + }); + map.addOverlay(startMarker); + var endMarker = new BMapGL.Marker(trackData[trackData.length-1].getPoint(), { + icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/end.png', new BMapGL.Size(25, 40)), + offset: new BMapGL.Size(0, -16), + + }); + map.addOverlay(endMarker); + var duration = 60000; + var step = duration / trackData.length; + + var trackRoad = new Track.LiveTrack({ + // visible: false, + duration: step, + linearTexture: [[0, '#f45e0c'], [0.5, '#f6cd0e'], [1, '#2ad61d']], + guideStyle: { + style:{ + traceDisappear: false, + traceStart: true, + sequence: true, + marginLength: 32, + arrowColor: '#fff', + strokeColor: 'rgba(27, 142, 236, 1)', + strokeTextureUrl: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/down.png', + strokeTextureWidth: 64, + strokeTextureHeight: 32, + } + }, + }); + + trackRoad.setGuidTrackPath(trackData); + trackRoad.on(Track.LineCodes.GUIDE_STATUS, (e) => { + if (e.status === Track.GuidCodes.ADD_TO_MAP) { + var guidTrack = trackRoad.getGuidTrack(); + guidTrack.on(Track.LineCodes.STATUS, (status) => { + switch (status) { + case Track.StatusCodes.FINISH: + var box = trackRoad.getBBox(); + if(box){ + var bounds = [new BMapGL.Point(box[0], box[1]), new BMapGL.Point(box[2], box[3])]; + map.setViewport(bounds); + } + break; + default: + break; + } + }); + } + }); + var movePoint = new Track.ModelPoint({ point: trackData[0].getPoint(), style:{ + url: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/bus.glb', + scale: 9, + level: 18, + rotationX: 90, + rotationY: 90, + rotationZ: 0 + } }); + movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); + + trackRoad.setMovePoint(movePoint); + + track.addTrackLine(trackRoad); + track.focusTrack(trackRoad); + + var ani; + var start = null; + var index = 0; + var finishIndex = 0; + + + function startAnimation(timestamp) { + if (!start) start = timestamp; + var progress = timestamp - start; + var next = step * (index - finishIndex); + + if(progress > next){ + if(index<trackData.length){ + movePoint.moveTo(trackData[index]); + var obj = trackRoad.getGuidTrack().getStepInfoByIndex(index); + trackRoad.setGradientColors(colorOffset.slice(0,index+1)); + index++; + }else{ + pauseAnimation(); + } + + } + ani = requestAnimationFrame(startAnimation); + } + + + function stopAnimation() { + pauseAnimation(); + index = 0; + finishIndex = index; + + start = null; + trackRoad.clearTrackPoint(); + movePoint.setPoint(trackData[0].getPoint()); + movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); + } + function pauseAnimation() { + cancelAnimationFrame(ani); + finishIndex = index; + start = null; + } + function resumeAnimation() { + startAnimation(); + } +</script> @} diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html index 6bdd85e..294f5bb 100644 --- a/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html +++ b/ManagementOKTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTaxi/tOrderTaxi_trajectory.html @@ -23,9 +23,9 @@ <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> </div> </div> - <div class="row" style="margin-top: 30px;"> + <div class="row"> <div class="col-sm-10"> - <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="form-horizontal" id="allmap" style="margin-left: 50px;width: 100%; height: 500px;"></div> <div class="input-card" style="margin-left: 50px;"> <h4>轨迹回放控制</h4> <div class="input-item"> @@ -40,13 +40,13 @@ </div> </div> </div> - </div> - </div> </div> -<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> -<script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> -<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=t5pcBZB5G4D11G9MzHq8Kik7jqzlTrAL"></script> +<script src="${ctxPath}/static/js/track1.js"></script> +<script src="${ctxPath}/static/js/track2.js"></script> +<script src="${ctxPath}/static/js/track3.js"></script> +<script type="text/javascript" src="//mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/track.js"></script> <script src="${ctxPath}/static/modular/system/tOrderTaxi/tOrderTaxi_info.js"></script> @} diff --git a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js index 5c8e506..70b5bd1 100644 --- a/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js +++ b/ManagementOKTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTaxi/tOrderTaxi_info.js @@ -125,11 +125,157 @@ ajax.start(); } - -var map = new AMap.Map("container", { - resizeEnable: true, - zoom: 14 +var map = new BMapGL.Map('allmap', { + style: 'grayed-out', + displayOptions: { + indoor: false, + poiText: false, + poiIcon: false, + building: false, + } }); +var point = new BMapGL.Point(demo_data[0][0], demo_data[0][1]); + +map.centerAndZoom(point, 18); +map.enableScrollWheelZoom(true); +map.setTilt(35); + +var track = new Track.View(map, { + lineLayerOptions: { + style: { + strokeWeight: 8, + strokeLineJoin: 'round', + strokeLineCap: 'round' + }, + } +}); + +var trackData = []; +var colorOffset = []; + +function orderTrack(data) { + for(var item in data){ + var point = new BMapGL.Point(data[item].longitude, data[item].latitude); + var trackPoint = new Track.TrackPoint(point); + trackData.push(trackPoint); + // 不同速度区间对应颜色 + var choose = [0.9, 0.5, 0.1]; + var color = choose[Math.floor(Math.random() * choose.length)]; + colorOffset.push(color); + } +} +var startMarker = new BMapGL.Marker(trackData[0].getPoint(), { + icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/start.png', new BMapGL.Size(25, 40)), + offset: new BMapGL.Size(0, -16), +}); +map.addOverlay(startMarker); +var endMarker = new BMapGL.Marker(trackData[trackData.length-1].getPoint(), { + icon: new BMapGL.Icon('https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/end.png', new BMapGL.Size(25, 40)), + offset: new BMapGL.Size(0, -16), + +}); +map.addOverlay(endMarker); +var duration = 60000; +var step = duration / trackData.length; + +var trackRoad = new Track.LiveTrack({ + // visible: false, + duration: step, + linearTexture: [[0, '#f45e0c'], [0.5, '#f6cd0e'], [1, '#2ad61d']], + guideStyle: { + style:{ + traceDisappear: false, + traceStart: true, + sequence: true, + marginLength: 32, + arrowColor: '#fff', + strokeColor: 'rgba(27, 142, 236, 1)', + strokeTextureUrl: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/down.png', + strokeTextureWidth: 64, + strokeTextureHeight: 32, + } + }, +}); + +trackRoad.setGuidTrackPath(trackData); +trackRoad.on(Track.LineCodes.GUIDE_STATUS, (e) => { + if (e.status === Track.GuidCodes.ADD_TO_MAP) { + var guidTrack = trackRoad.getGuidTrack(); + guidTrack.on(Track.LineCodes.STATUS, (status) => { + switch (status) { + case Track.StatusCodes.FINISH: + var box = trackRoad.getBBox(); + if(box){ + var bounds = [new BMapGL.Point(box[0], box[1]), new BMapGL.Point(box[2], box[3])]; + map.setViewport(bounds); + } + break; + default: + break; + } + }); + } +}); +var movePoint = new Track.ModelPoint({ point: trackData[0].getPoint(), style:{ + url: 'https://mapopen-pub-jsapi.bj.bcebos.com/jsapiGlgeo/img/bus.glb', + scale: 9, + level: 18, + rotationX: 90, + rotationY: 90, + rotationZ: 0 + } }); +movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); + +trackRoad.setMovePoint(movePoint); + +track.addTrackLine(trackRoad); +track.focusTrack(trackRoad); + +var ani; +var start = null; +var index = 0; +var finishIndex = 0; + + +function startAnimation(timestamp) { + if (!start) start = timestamp; + var progress = timestamp - start; + var next = step * (index - finishIndex); + + if(progress > next){ + if(index<trackData.length){ + movePoint.moveTo(trackData[index]); + var obj = trackRoad.getGuidTrack().getStepInfoByIndex(index); + trackRoad.setGradientColors(colorOffset.slice(0,index+1)); + index++; + }else{ + pauseAnimation(); + } + + } + ani = requestAnimationFrame(startAnimation); +} + + +function stopAnimation() { + pauseAnimation(); + index = 0; + finishIndex = index; + + start = null; + trackRoad.clearTrackPoint(); + movePoint.setPoint(trackData[0].getPoint()); + movePoint.setRotation(trackRoad.getGuidTrack().getStepInfoByIndex(0).angle); +} +function pauseAnimation() { + cancelAnimationFrame(ani); + finishIndex = index; + start = null; +} +function resumeAnimation() { + startAnimation(); +} + $(function() { $('#orderType').on('change', function () { if($(this).val() == 1){ @@ -165,68 +311,4 @@ }); } -var marker, lineArr = []; -function orderTrack(data) { - for(var i in data){ - var waypoints = []; - var lon = parseFloat(data[i].lon); - var lat = parseFloat(data[i].lat); - waypoints.push(lon); - waypoints.push(lat); - lineArr.push(waypoints); - } - - marker = new AMap.Marker({ - map: map, - position: lineArr[0], - icon: "https://webapi.amap.com/images/car.png", - offset: new AMap.Pixel(-26, -13), - autoRotation: true, - angle:-90, - }); - - // 绘制轨迹 - 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, - // path: lineArr, - strokeColor: "#AF5", //线颜色 - // strokeOpacity: 1, //线透明度 - strokeWeight: 6, //线宽 - // strokeStyle: "solid" //线样式 - }); - - - marker.on('moving', function (e) { - passedPolyline.setPath(e.passedPath); - }); - - map.setFitView(); -} - - -function startAnimation () { - marker.moveAlong(lineArr, 200); -} - -function pauseAnimation () { - marker.pauseMove(); -} - -function resumeAnimation () { - marker.resumeMove(); -} - -function stopAnimation () { - marker.stopMove(); -} -- Gitblit v1.7.1