| | |
| | | var map = new BMap.Map("mapCanvas", {enableMapClick: false}); |
| | | var trackPoints = []; //用来存放从后台获取到的所有历史轨迹点的数据 |
| | | var winfowText; |
| | | var a1=-2; |
| | | var coincidentpoints=[]; |
| | | var coincidentPoints=new Array(); |
| | | if (sensorInfo.length > 0) { |
| | | $.each(sensorInfo, function (item, value) { |
| | | trackPoints.push(new BMap.Point(value.e76, value.e77)); |
| | |
| | | for (var i = 0; i < trackPoints.length; i++) { |
| | | var startPoint = trackPoints[i]; |
| | | var endPoint = trackPoints[i + 1]; |
| | | winfowText = "时间:" + sensorInfo[i].uavDate |
| | | + "</br> 经度:" + sensorInfo[i].e76 |
| | | + "</br> 纬度:" + sensorInfo[i].e77 |
| | | + "</br> 高度:" + sensorInfo[i].e78 |
| | | + "</br> 速度x:" + sensorInfo[i].e79 |
| | | + "</br> 速度y:" + sensorInfo[i].e80 |
| | | + "</br> 速度z:" + sensorInfo[i].e81; |
| | | for (var j = i + 1; j < trackPoints.length; j++) { |
| | | if(startPoint.equals(trackPoints[j])&&i!=j){ |
| | | a1=i; |
| | | coincidentpoints.push(j); |
| | | } |
| | | for(var x=0;x<coincidentpoints.length;x++){ |
| | | if (i==a1||i==coincidentpoints[x]) { |
| | | winfowText = "时间:" + sensorInfo[a1].uavDate + "</br> 时间:" + sensorInfo[coincidentpoints[x]].uavDate; |
| | | } |
| | | } |
| | | } |
| | | var marker; |
| | | var distance=parseInt(map.getDistance(startPoint,endPoint)); |
| | | map.addOverlay(polyline);// 画两点间线 |
| | | var arrowLength;//两点间箭头长度 |
| | | if(distance<=2){ |
| | | arrowLength=0; |
| | | }else{ |
| | | arrowLength=5; |
| | | } |
| | | if(coincidentPoints.indexOf(i)>-1){ |
| | | var polyline = new BMap.Polyline([ |
| | | trackPoints[i], |
| | | trackPoints[i+1] |
| | | ], |
| | | {strokeColor: "green", strokeWeight: 2, strokeOpacity: 1} |
| | | ); |
| | | distance=parseInt(map.getDistance(trackPoints[i],trackPoints[i+1])); |
| | | map.addOverlay(polyline);// 画两点间线 |
| | | if(distance<=2){ |
| | | arrowLength=0; |
| | | }else{ |
| | | arrowLength=5; |
| | | } |
| | | addArrow(polyline, arrowLength, Math.PI / 7); |
| | | //判断是否已经已经显示过该点的信息,避免重复。 |
| | | continue; |
| | | } |
| | | |
| | | var startIcon = new BMap.Icon("/img/start.png", new BMap.Size(48, 48)); |
| | | var endIcon = new BMap.Icon("/img/end.png", new BMap.Size(48, 48)); |
| | | if (i == 0) { |
| | |
| | | if (i != 0 && i != trackPoints.length - 1) { |
| | | marker = new BMap.Marker(startPoint); |
| | | } |
| | | winfowText = "时间:" + sensorInfo[i].uavDate |
| | | + "</br> 经度:" + sensorInfo[i].e76 |
| | | + "</br> 纬度:" + sensorInfo[i].e77 |
| | | + "</br> 高度:" + sensorInfo[i].e78 |
| | | + "</br> 速度x:" + sensorInfo[i].e79 |
| | | + "</br> 速度y:" + sensorInfo[i].e80 |
| | | + "</br> 速度z:" + sensorInfo[i].e81; |
| | | var count=0; |
| | | for (var j=i+1;j< trackPoints.length; j++) { |
| | | if (trackPoints[i].equals(trackPoints[j])) { |
| | | coincidentPoints.push(j); |
| | | count++; |
| | | winfowTextAdd = "</br> 时间:" + sensorInfo[j].uavDate |
| | | + "</br> 经度:" + sensorInfo[j].e76 |
| | | + "</br> 纬度:" + sensorInfo[j].e77 |
| | | + "</br> 高度:" + sensorInfo[j].e78 |
| | | + "</br> 速度x:" + sensorInfo[j].e79 |
| | | + "</br> 速度y:" + sensorInfo[j].e80 |
| | | + "</br> 速度z:" + sensorInfo[j].e81; |
| | | winfowText += winfowTextAdd; |
| | | if(j==trackPoints.length-1){ |
| | | marker = new BMap.Marker(trackPoints[j], {icon: endIcon, offset: new BMap.Size(0, -20)}); |
| | | map.setCurrentCity("昆山"); |
| | | map.setMapStyle(mapStyle); |
| | | map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放 |
| | | var navigation = new BMap.NavigationControl({ |
| | | anchor: BMAP_ANCHOR_BOTTOM_RIGHT, |
| | | type: BMAP_NAVIGATION_CONTROL_LARGE |
| | | }); |
| | | map.maxZoom=20; |
| | | map.addControl(navigation); |
| | | map.addControl(new BMap.ScaleControl()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | (function (x) { |
| | | var infoWindow = new BMap.InfoWindow(winfowText, {enableMessage: false, width: 30, height: 130}); |
| | | var infoWindow = new BMap.InfoWindow(winfowText, {enableMessage: false, width: 30}); |
| | | marker.addEventListener("click", function () { |
| | | this.openInfoWindow(infoWindow); |
| | | }); |
| | | })(i); |
| | | map.addOverlay(marker); |
| | | |
| | | if(count>0){ |
| | | var lab = new BMap.Label(count+1, {position: startPoint, offset: new BMap.Size(-7, -23)}); |
| | | lab.setStyle({ |
| | | color: "#fff", |
| | | fontSize: "16px", |
| | | backgroundColor: "1", |
| | | border: "0", |
| | | fontWeight: "bold" |
| | | }); |
| | | map.addOverlay(lab); |
| | | |
| | | } |
| | | map.addOverlay(marker); |
| | | var polyline = new BMap.Polyline([ |
| | | startPoint, |
| | | endPoint |
| | |
| | | ); |
| | | if (i < trackPoints.length - 1) { |
| | | map.addOverlay(polyline);// 画两点间线 |
| | | addArrow(polyline, 5, Math.PI / 7); |
| | | addArrow(polyline, arrowLength, Math.PI / 7); |
| | | } |
| | | } |
| | | } |