From 9c85c2ace8c4d7b96ff6dfb0a2823f608fbe1236 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Thu, 22 Aug 2019 16:57:38 +0800
Subject: [PATCH] 新增污染传播来源页面

---
 src/main/webapp/view/pollutionsource.jsp |  202 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 202 insertions(+), 0 deletions(-)

diff --git a/src/main/webapp/view/pollutionsource.jsp b/src/main/webapp/view/pollutionsource.jsp
new file mode 100644
index 0000000..31d1fd0
--- /dev/null
+++ b/src/main/webapp/view/pollutionsource.jsp
@@ -0,0 +1,202 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<!DOCTYPE html>
+<head>
+    <meta charset="utf-8"/>
+    <title></title>
+    <script type="text/javascript"
+            src="http://api.map.baidu.com/api?v=2.0&ak=rER1sgBIcQxkfNSlm2wmBGZGgEERrooM"></script>
+    <script type="text/javascript" src="/js/jquery.min.js"></script>
+</head>
+<style type="text/css">
+    body,
+    html,
+    #mapCanvas {
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+        margin: 0;
+        z-index: 0;
+        font-size: 14px;
+        font-family: "������������";
+    }
+
+    .main_body {
+        border: 0;
+        margin: 0;
+        width: 100%;
+        height: 100%;
+        position: relative;
+    }
+
+    * {
+        margin: 0;
+        padding: 0;
+        list-style: none;
+    }
+</style>
+
+<body>
+<div class="main_body">
+    <div id="mapCanvas"></div> <!-- ������������ -->
+    <!-- ���sensorInfo,regionCode,regionName,monitorPoint,device-->
+    <div id="pollutionSourceParams" style="display: none;">
+        ${requestScope.pollutionSourceParams}
+    </div>
+</div>
+</body>
+</html>
+
+<script type="text/javascript">
+    var moralMap = {};
+    var mapStyle = {
+        features: ["road", "building", "water", "land"], // ������������������poi
+        style: "normal" // ������������������������������
+    };
+    var params = $.parseJSON($("#pollutionSourceParams").html());
+    var weatherInfoToday = params["weatherInfoToday"];
+    var weatherInfoForecast = params["weatherInfoForecast"];
+    var isToday = params["isToday"];
+    console.log(weatherInfoToday);
+    console.log(weatherInfoForecast);
+    console.log(isToday);
+    var device = params["device"];
+    var cityName = params["weatherInfoToday"]["cityName"];
+    var map = new BMap.Map("mapCanvas", {enableMapClick: false});
+    map.setCurrentCity("������");
+    map.setMapStyle(mapStyle);
+    map.enableScrollWheelZoom(true); // ������������������������
+    var navigation = new BMap.NavigationControl({
+        anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
+        type: BMAP_NAVIGATION_CONTROL_LARGE
+    });
+    map.addControl(navigation);
+    map.addControl(new BMap.ScaleControl());
+    var longitude = params["device"]["longitude"];
+    var latitude = params["device"]["latitude"];
+    var point = new BMap.Point(longitude, latitude);
+    var icon = new BMap.Icon("/img/ico00.png", new BMap.Size(50, 50));
+    var marker = new BMap.Marker(point, {icon: icon, offset: new BMap.Size(0, -20)});
+    map.addOverlay(marker);
+    map.setCurrentCity(cityName);
+    map.centerAndZoom(point, 19);
+    var bounds = map.getBounds(); //������������������������
+    var sw = bounds.getSouthWest(); //���������������������������(������������)
+    var ne = bounds.getNorthEast(); //���������������������������(������������)
+    var wn = new BMap.Point(sw.lng, ne.lat); //���������������������������(������������)
+    var es = new BMap.Point(ne.lng, sw.lat); //���������������������������(������������)
+    var n = new BMap.Point(longitude, ne.lat);
+    var s = new BMap.Point(longitude, sw.lat);
+    var w = new BMap.Point(sw.lng, latitude);
+    var e = new BMap.Point(ne.lng, latitude);
+    var dirPoint;
+    if (Object.keys(weatherInfoForecast).length === 0) {
+        var windDir = weatherInfoToday["windDir"];
+        dirPoint = getWindDir(windDir, dirPoint);
+    } else {
+        if (isToday) {
+            var windDir = weatherInfoToday["windDir"];
+            dirPoint = getWindDir(windDir, dirPoint);
+        } else {
+            var windDir = weatherInfoForecast["windDirDay"];
+            dirPoint = getWindDir(windDir, dirPoint);
+        }
+    }
+    var polyline = new BMap.Polyline([
+            dirPoint,
+            point
+        ],
+        {strokeColor: "#5298FF", strokeWeight: 4, strokeOpacity: 1}
+    );
+    map.addOverlay(polyline);// ���������������
+    addArrow(polyline, 50, Math.PI / 7);
+
+    var winfowText =
+        '<div style="min-height:20px;overflow:auto;max-height:330px;" >';
+    var opts = {
+        width: 220,
+        height: 220,
+        enableMessage: false //���������������������������������
+    }
+    winfowText += ("<p style='height: 22px;line-height: 22px'></p>");
+
+    winfowText += "</div>";
+    marker.addEventListener("click", function () {
+        var infoWindow = new BMap.InfoWindow(winfowText, opts);
+        this.openInfoWindow(infoWindow);
+    });
+
+
+    function addArrow(polyline, length, angleValue) {
+        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, pixelX1, pixelY1;// ���������������
+            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);
+                pixelX1 = pixelTemX + r * Math.tan(angle);
+                pixelY = pixelY1 = 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;
+                pixelX1 = pixelTemX - Math.tan(angle) * r * delta / param;
+                pixelY1 = pixelTemY + Math.tan(angle) * r / param;
+            }
+            var pointArrow = map.pixelToPoint(new BMap.Pixel(pixelX, pixelY));
+            var pointArrow1 = map.pixelToPoint(new BMap.Pixel(pixelX1, pixelY1));
+            var pointMiddle = map.pixelToPoint(new BMap.Pixel(poMiddleX, poMiddleY));
+            var Arrow = new BMap.Polyline([pointArrow, pointMiddle, pointArrow1],
+                {strokeColor: "#5298FF", strokeWeight: 4, strokeOpacity: 1});
+            map.addOverlay(Arrow);
+        }
+    };
+
+    function getWindDir(windDir, dirPoint) {
+        if (windDir == "������") {
+            dirPoint = n;
+        } else if (windDir == "������") {
+            dirPoint = s;
+        } else if (windDir == "������") {
+            dirPoint = w;
+        } else if (windDir == "������") {
+            dirPoint = e;
+        } else if (windDir == "���������") {
+            dirPoint = wn;
+        } else if (windDir == "���������") {
+            dirPoint = ne;
+        } else if (windDir == "���������") {
+            dirPoint = sw;
+        } else if (windDir == "���������") {
+            dirPoint = es;
+        } else {
+            dirPoint = n;
+        }
+        return dirPoint;
+    };
+</script>

--
Gitblit v1.8.0