<%@ 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 longitudeSecond=params["deviceSecond"]["longitude"];  
 | 
    var latitudeSecond=params["deviceSecond"]["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);// 设置中心点坐标和地图级别  
 | 
    var pointSecond=new BMap.Point(longitudeSecond, latitudeSecond);  
 | 
    var distance=parseInt(map.getDistance(point,pointSecond));//两点间距离,单位米  
 | 
    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(longitudeSecond, latitudeSecond)  
 | 
        ],      
 | 
        {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);  
 | 
        }  
 | 
    };  
 | 
    var arrowLength;//两点间箭头长度  
 | 
    if(distance<=100){  
 | 
        arrowLength=5;  
 | 
    }else if(distance>100&&distance<=200){  
 | 
        arrowLength=10;  
 | 
    }else if(distance>200&&distance<=500){  
 | 
        arrowLength=20;  
 | 
    }else if(distance>500&&distance<=1000){  
 | 
        arrowLength=40;  
 | 
    }else if(distance>1000&&distance<=2000){  
 | 
        arrowLength=80;  
 | 
    }else if(distance>2000&&distance<=3000){  
 | 
        arrowLength=120;  
 | 
    }else{  
 | 
        arrowLength=150;  
 | 
    }  
 | 
    addArrow(polyline,arrowLength,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(longitudeSecond,latitudeSecond),{icon:icon1});  
 | 
    map.addOverlay(mark2);   
 | 
    
 | 
</script>  
 |