ZhuDongming
2019-06-05 d6747b2f8c31d2e879d4d59e19c9410c13c35228
增加溯源查询后返回页面
1 files added
163 ■■■■■ changed files
src/main/webapp/view/traceability.jsp 163 ●●●●● patch | view | raw | blame | history
src/main/webapp/view/traceability.jsp
New file
@@ -0,0 +1,163 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@page isELIgnored="false" %>
<%
    String version ="1.000004";
    response.setHeader("Cache-Control","no-store");
    response.setHeader("Pragrma","no-cache");
    response.setDateHeader("Expires",0);
%>
<!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>
    <script type="text/javascript">
        if(typeof (JSON) == 'undefined'){
            $.getScript("js/json2.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;
    }
    .tools_box{
        position: absolute;
        height: 120px;
        width: 400px;
        right: 1px;
        top: 20px;
        z-index: 1;
    }
</style>
<body>
    <div class="main_body">
        <div id="mapCanvas"></div> <!-- 百度地图 -->
        <!-- 传sensorInfo,regionCode,regionName,monitorPoint,device-->
        <div id="traceabilityParams" style="display: none;">
            ${requestScope.traceabilityParams}
        </div>
    </div>
</body>
</html>
<script>
    var moralMap={};
    var defaultParam = {
        minZoom: 12,
        maxZoom: 20
    };
    var mapStyle = {
           features: ["road", "building", "water", "land"], // 隐藏地图上的poi
        style: "normal" // 设置地图风格为高端黑
    };
    var params = $.parseJSON($("#traceabilityParams").html());
    moralMap['params'] = params;
    var sensorInfo=params["sensorInfo"];
    var regionName=params["regionName"];
    var longitude=params["device"]["longitude"];
    var latitude=params["device"]["latitude"];
    var regoinNameNew= regionName.split(" ");
    var cityName = regoinNameNew.length>1?regoinNameNew[1]:regoinNameNew[0];
    var map = new BMap.Map("mapCanvas",defaultParam);
    map.setCurrentCity(cityName);
    map.setMapStyle(mapStyle);
    map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
    var navigation = new BMap.NavigationControl({
        anchor: BMAP_ANCHOR_BOTTOM_RIGHT,
        type: BMAP_NAVIGATION_CONTROL_LARGE
    });
    map.addControl(navigation); // 增加导航控件
    var point = new BMap.Point(longitude, latitude);// 设置中心点坐标和地图级别
    map.centerAndZoom(point, 18);
    var marker = new BMap.Marker(point);        // 创建标注
    map.addOverlay(marker);
    var polyline = new BMap.Polyline([
        new BMap.Point(longitude, latitude),
        new BMap.Point(longitude+0.005, latitude+0.005)
        ],
        {strokeColor:"blue", strokeWeight:1, strokeOpacity:0.5}
    );
    map.addOverlay(polyline);// 画两点间线
    // 中间画箭头方法
    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:"blue", strokeWeight:2, strokeOpacity:0.5});
            map.addOverlay(Arrow);
        }
    };
    addArrow(polyline,40,Math.PI/7);
    // 设置坐标图标
    var icon1 = new BMap.Icon("/img/ico00.png",new BMap.Size(50,50));
    var mark1 = new BMap.Marker(new BMap.Point(longitude,latitude),{icon:icon1});
    map.addOverlay(mark1);
    var mark2 = new BMap.Marker(new BMap.Point(longitude+0.005,latitude+0.005),{icon:icon1});
    map.addOverlay(mark2);
</script>