From fa7229d6571a73e5691a21f7b4052d681cca8317 Mon Sep 17 00:00:00 2001 From: ZhuDongming <zdm773644075@hotmail.com> Date: Tue, 03 Sep 2019 20:51:01 +0800 Subject: [PATCH] update 污染传播接口 --- src/main/webapp/view/pollutionsource.jsp | 299 ++++++++++++++++++++++++++----------------------- src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java | 17 ++ 2 files changed, 174 insertions(+), 142 deletions(-) diff --git a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java index d1235c5..2fabdce 100644 --- a/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryHourlyServiceImpl.java @@ -15,6 +15,7 @@ import com.moral.mapper.SensorMapper; import com.moral.service.DeviceService; import com.moral.service.HistoryHourlyService; +import com.moral.service.SensorService; import javax.annotation.Resource; @Service @@ -24,6 +25,9 @@ @Resource private DeviceService deviceService; + + @Resource + private SensorService sensorService; @Resource private SensorMapper sensorMapper; @@ -36,7 +40,18 @@ sensorKeys.add(sensor.getSensorKey()); } parameters.put("sensorKeys", sensorKeys); - return historyHourlyMapper.getPollutionSourceData(parameters); + Map<String, Object> pollutionSourceData = historyHourlyMapper.getPollutionSourceData(parameters); + if (MapUtils.isNotEmpty(pollutionSourceData)) { + Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters); + String selectSensorKey = parameters.get("sensorKey").toString(); + for (Map.Entry<String, String> s : sensorsMap.entrySet()) { + if (selectSensorKey.equals(s.getKey())) { + selectSensorKey = s.getValue(); + } + } + pollutionSourceData.put("selectSensorKey", selectSensorKey); + } + return pollutionSourceData; } @Override diff --git a/src/main/webapp/view/pollutionsource.jsp b/src/main/webapp/view/pollutionsource.jsp index bbcd5d6..6671e9b 100644 --- a/src/main/webapp/view/pollutionsource.jsp +++ b/src/main/webapp/view/pollutionsource.jsp @@ -122,7 +122,7 @@ <body> <div class="main_body"> - <input type="button" id="show" value="������"/> + <input type="button" id="show" value="������"/> <div id="cpm">������������������</div> <div id="mapCanvas"></div> <!-- ������������ --> <!-- ���sensorInfo,regionCode,regionName,monitorPoint,device--> @@ -162,7 +162,33 @@ var marker = new BMap.Marker(point, {icon: icon, offset: new BMap.Size(0, -20)}); map.addOverlay(marker); map.centerAndZoom(point, 16); - + if (!$.isEmptyObject(dirPoint) && !$.isEmptyObject(getPollutionSourceData) && typeof (getPollutionSourceData["e6"]) != "undefined" && typeof (getPollutionSourceData["e7"]) != "undefined" && typeof (getPollutionSourceData["e18"]) != "undefined" && typeof (getPollutionSourceData["e23"]) != "undefined" && getPollutionSourceData["e18"] > 0.03) { + var windSpeed = parseFloat(getPollutionSourceData["e18"]); + var windDir = parseFloat(getPollutionSourceData["e23"]); + var distance = windSpeed * 3600; + var winDirStart = 255 - windDir; + var winDirEnd = 285 - windDir; + var marker1 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.15, winDirStart), { + icon: icon2, + offset: new BMap.Size(0, -20) + }); + var marker2 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.31, winDirEnd), { + icon: icon2, + offset: new BMap.Size(0, -20) + }); + var marker3 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.61, winDirStart), { + icon: icon1, + offset: new BMap.Size(0, -20) + }); + var marker4 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.78, winDirEnd), { + icon: icon1, + offset: new BMap.Size(0, -20) + }); + map.addOverlay(marker1); + map.addOverlay(marker2); + map.addOverlay(marker3); + map.addOverlay(marker4); + } $("#show").one('click', function () { setTimeout(function () { @@ -173,43 +199,19 @@ var temperature = parseFloat(getPollutionSourceData["e7"]); var windSpeed = parseFloat(getPollutionSourceData["e18"]); var windDir = parseFloat(getPollutionSourceData["e23"]); - var iconDir = new BMap.Icon("/img/ico07.gif", new BMap.Size(50, 50)); - var markerDir = new BMap.Marker(dirPoint, {icon: iconDir, offset: new BMap.Size(0, -20)}); - - //centre:���������������,X:������������,Y:������������ - function add_oval(centre, x, y) { - var assemble = new Array(); - var angle; - var dot; - var tangent = x / y; - for (i = 0; i < 36; i++) { - angle = (2 * Math.PI / 36) * i; - dot = new BMap.Point(centre.lng + Math.sin(angle) * y * tangent, centre.lat + Math.cos(angle) * y); - assemble.push(dot); - } - return assemble; - } - - //��������������������������������������������� ���������point������������������������radius������������sDegree���eDegree��������� - function Sector(point, radius, sDegree, eDegree) { - var points = []; //��������������������������������� - var step = ((eDegree - sDegree) / 100) || 1; //������������������������������������������������������������10 - points.push(point); - for (var i = sDegree; i < eDegree + 0.001; i += step) { //������������������������������������������������������������ - points.push(EOffsetBearing(point, radius, i)); - } - points.push(point); - return points; - } - - //������������������������������������������������������������������ - function EOffsetBearing(point, dist, bearing) { - var lngConv = map.getDistance(point, new BMap.Point(point.lng + 0.1, point.lat)) * 10; //������������������������������ - var latConv = map.getDistance(point, new BMap.Point(point.lng, point.lat + 0.1)) * 10; //������������������������������ - var lat = dist * Math.sin(bearing * Math.PI / 180) / latConv; //������������������������������������������������������ - var lng = dist * Math.cos(bearing * Math.PI / 180) / lngConv; //������������������������������������������������������ - return new BMap.Point(point.lng + lng, point.lat + lat); - } + var selectSensorKey = getPollutionSourceData["selectSensorKey"]; + var markerDir = new BMap.Marker(dirPoint); + lab = new BMap.Label("���������������������������</br>" + selectSensorKey + "������������", { + position: dirPoint, + offset: new BMap.Size(20, -40) + }); + lab.setStyle({ + color: "#EE3B3B", + fontSize: "16px", + backgroundColor: "1", + fontWeight: "bold" + }); + map.addOverlay(lab); var distance = windSpeed * 3600; var winDirStartLeft = 240 - windDir; @@ -232,6 +234,9 @@ ], {strokeColor: "red", strokeWeight: 4, strokeOpacity: 1} ); + map.addOverlay(polyline1);// ��������������� + map.addOverlay(polyline2);// ��������������� + map.addOverlay(markerDir); setTimeout(function () { var ovalLeft = new BMap.Polygon(Sector(dirPoint, distance, winDirStartLeft, winDirEndLeft), { strokeColor: "#ADADAD", @@ -306,30 +311,7 @@ fillColor: "#ADADAD" }); map.addOverlay(ovalRight); - map.addOverlay(markerDir); - var marker1 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.15, winDirStart), { - icon: icon2, - offset: new BMap.Size(0, -20) - }); - var marker2 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.31, winDirEnd), { - icon: icon2, - offset: new BMap.Size(0, -20) - }); - var marker3 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.61, winDirStart), { - icon: icon1, - offset: new BMap.Size(0, -20) - }); - var marker4 = new BMap.Marker(EOffsetBearing(dirPoint, distance * 0.78, winDirEnd), { - icon: icon1, - offset: new BMap.Size(0, -20) - }); - map.addOverlay(marker1); - map.addOverlay(marker2); - map.addOverlay(marker3); - map.addOverlay(marker4); map.addOverlay(oval); - map.addOverlay(polyline1);// ��������������� - map.addOverlay(polyline2);// ��������������� }, 500); var winfowTextCause = "<p style='height: 44px;line-height: 22px'>���������������������������������������������������������������������������������������������������������������������</p>"; @@ -393,86 +375,121 @@ this.openInfoWindow(infoWindow); }); } - - function addArrow(polyline, length, angleValue, temperature, humidity, windSpeed, windDir) { - var linePoint = polyline.getPath();// ��������������� - var arrowCount = linePoint.length; - for (var i = 1; i < arrowCount; i++) { // ������������������������ - var pixelStart = map.pointToPixel(linePoint[i - 1]); - var pixelEnd = map.pointToPixel(linePoint[i]); - var angle = angleValue;// ������������������������ - var r = length; // r/Math.sin(angle)������������������ - var delta = 0; // ��������������������������������� - var param = 0; // ������������������ - var pixelTemX, pixelTemY, poMiddleX, poMiddleY;// ��������������� - var pixelX, pixelY;// ��������������� - poMiddleX = (pixelEnd.x + pixelStart.x) / 2; - poMiddleY = (pixelEnd.y + pixelStart.y) / 2; - if (poMiddleX - pixelStart.x == 0) { // ������������������ - pixelTemX = poMiddleX; - if (poMiddleY > pixelStart.y) { - pixelTemY = poMiddleY - r; - } else { - pixelTemY = poMiddleY + r; - } - // ��������������������������������������������������������������������������������������� - pixelX = pixelTemX - r * Math.tan(angle); - pixelY = pixelTemY; - } else { // ��������������� - delta = (poMiddleY - pixelStart.y) / (poMiddleX - pixelStart.x); - param = Math.sqrt(delta * delta + 1); - if ((poMiddleX - pixelStart.x) < 0) { // ������������������ - pixelTemX = poMiddleX + r / param; - pixelTemY = poMiddleY + delta * r / param; - } else { // ������������������ - pixelTemX = poMiddleX - r / param; - pixelTemY = poMiddleY - delta * r / param; - } - // ��������������������������������������������������������������������������������������� - pixelX = pixelTemX + Math.tan(angle) * r * delta / param; - pixelY = pixelTemY - Math.tan(angle) * r / param; - } - var pointMiddle = map.pixelToPoint(new BMap.Pixel(poMiddleX, poMiddleY)); - var windDirection; - if (windDir == 0) { - windDirection = "������"; - } else if (windDir == 90) { - windDirection = "������"; - } else if (windDir == 180) { - windDirection = "������"; - } else if (windDir == 270) { - windDirection = "������"; - } else if (windDir > 0 && windDir < 90) { - windDirection = "���������"; - } else if (windDir > 90 && windDir < 180) { - windDirection = "���������"; - } else if (windDir > 180 && windDir < 270) { - windDirection = "���������"; - } else if (windDir > 270 && windDir < 360) { - windDirection = "���������"; - } - lab = new BMap.Label("<P>������:" + temperature + "���</p><P>������:" + humidity + "%</p><P>������:" + windSpeed + "m/s</p><P>������:" + windDirection + "</p>", { - position: pointMiddle, - offset: new BMap.Size(-50, -40) - }); - lab.setStyle({ - color: "#EE3B3B", - fontSize: "16px", - backgroundColor: "1", - border: "0", - fontWeight: "bold" - }); - map.addOverlay(lab); - } - }; - - function showNoData() { - map.centerAndZoom(point, 17); - setTimeout(function () { - document.getElementById("cpm").style.display = 'block'; - }, 250); - }; }, 1500); }); + //centre:���������������,X:������������,Y:������������ + function add_oval(centre, x, y) { + var assemble = new Array(); + var angle; + var dot; + var tangent = x / y; + for (i = 0; i < 36; i++) { + angle = (2 * Math.PI / 36) * i; + dot = new BMap.Point(centre.lng + Math.sin(angle) * y * tangent, centre.lat + Math.cos(angle) * y); + assemble.push(dot); + } + return assemble; + } + + //��������������������������������������������� ���������point������������������������radius������������sDegree���eDegree��������� + function Sector(point, radius, sDegree, eDegree) { + var points = []; //��������������������������������� + var step = ((eDegree - sDegree) / 100) || 1; //������������������������������������������������������������10 + points.push(point); + for (var i = sDegree; i < eDegree + 0.001; i += step) { //������������������������������������������������������������ + points.push(EOffsetBearing(point, radius, i)); + } + points.push(point); + return points; + } + + //������������������������������������������������������������������ + function EOffsetBearing(point, dist, bearing) { + var lngConv = map.getDistance(point, new BMap.Point(point.lng + 0.1, point.lat)) * 10; //������������������������������ + var latConv = map.getDistance(point, new BMap.Point(point.lng, point.lat + 0.1)) * 10; //������������������������������ + var lat = dist * Math.sin(bearing * Math.PI / 180) / latConv; //������������������������������������������������������ + var lng = dist * Math.cos(bearing * Math.PI / 180) / lngConv; //������������������������������������������������������ + return new BMap.Point(point.lng + lng, point.lat + lat); + } + + function addArrow(polyline, length, angleValue, temperature, humidity, windSpeed, windDir) { + var linePoint = polyline.getPath();// ��������������� + var arrowCount = linePoint.length; + for (var i = 1; i < arrowCount; i++) { // ������������������������ + var pixelStart = map.pointToPixel(linePoint[i - 1]); + var pixelEnd = map.pointToPixel(linePoint[i]); + var angle = angleValue;// ������������������������ + var r = length; // r/Math.sin(angle)������������������ + var delta = 0; // ��������������������������������� + var param = 0; // ������������������ + var pixelTemX, pixelTemY, poMiddleX, poMiddleY;// ��������������� + var pixelX, pixelY;// ��������������� + poMiddleX = (pixelEnd.x + pixelStart.x) / 2; + poMiddleY = (pixelEnd.y + pixelStart.y) / 2; + if (poMiddleX - pixelStart.x == 0) { // ������������������ + pixelTemX = poMiddleX; + if (poMiddleY > pixelStart.y) { + pixelTemY = poMiddleY - r; + } else { + pixelTemY = poMiddleY + r; + } + // ��������������������������������������������������������������������������������������� + pixelX = pixelTemX - r * Math.tan(angle); + pixelY = pixelTemY; + } else { // ��������������� + delta = (poMiddleY - pixelStart.y) / (poMiddleX - pixelStart.x); + param = Math.sqrt(delta * delta + 1); + if ((poMiddleX - pixelStart.x) < 0) { // ������������������ + pixelTemX = poMiddleX + r / param; + pixelTemY = poMiddleY + delta * r / param; + } else { // ������������������ + pixelTemX = poMiddleX - r / param; + pixelTemY = poMiddleY - delta * r / param; + } + // ��������������������������������������������������������������������������������������� + pixelX = pixelTemX + Math.tan(angle) * r * delta / param; + pixelY = pixelTemY - Math.tan(angle) * r / param; + } + var pointMiddle = map.pixelToPoint(new BMap.Pixel(poMiddleX, poMiddleY)); + var windDirection; + if (windDir == 0) { + windDirection = "������"; + } else if (windDir == 90) { + windDirection = "������"; + } else if (windDir == 180) { + windDirection = "������"; + } else if (windDir == 270) { + windDirection = "������"; + } else if (windDir > 0 && windDir < 90) { + windDirection = "���������"; + } else if (windDir > 90 && windDir < 180) { + windDirection = "���������"; + } else if (windDir > 180 && windDir < 270) { + windDirection = "���������"; + } else if (windDir > 270 && windDir < 360) { + windDirection = "���������"; + } + lab = new BMap.Label("<P>������:" + temperature + "���</p><P>������:" + humidity + "%</p><P>������:" + windSpeed + "m/s</p><P>������:" + windDirection + "</p>", { + position: pointMiddle, + offset: new BMap.Size(-50, -40) + }); + lab.setStyle({ + color: "#EE3B3B", + fontSize: "16px", + backgroundColor: "1", + border: "0", + fontWeight: "bold" + }); + map.addOverlay(lab); + } + }; + + function showNoData() { + map.centerAndZoom(point, 17); + setTimeout(function () { + document.getElementById("cpm").style.display = 'block'; + }, 250); + }; + </script> -- Gitblit v1.8.0