zoukankan      html  css  js  c++  java
  • baidumap 百度地图,实现多点之间的带方向路线图。

    通过lastVisitAt判断时间先后。

    通过三角函数验证角度

    再由baidumap 会制线段

    绘制三角箭头

    比较难看……

    测试个人

    因为框架引用baidu 有各种问题失败,为最快实现,以此页作一个独立的iframe

    通过window.localStorage 实现数据传递。

    父页代码

    window.localStorage.jsondata=JSON.stringify(json.data);
    var iframe=$("#iframebaidumap");
    iframe.attr('src', '/baidumap.html');
    window.localStorage.jsondata数据传递格式如下
    
    

    "[{"lat":34.514075,"lng":113.439854,"name":"千一网吧","mobileNumber":"15838095119","contactName":"岳老板","phoneNumber":"","lastVisitAt":"2015-04-17T07:14:32.301Z"}]"

    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Hello, World</title>
        <style type="text/css">
            /*html{height:100%}*/
            body{
                /*height:100%;*/
                margin:0px;padding:0px;
                height:600px;600px;
    
            }
            #container{height:600px}
        </style>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你懂得">
            //v1.5版本的引用方式:src="http://api.map.baidu.com/api?v=1.5&ak=您的密钥"
            //v1.4版本及以前版本的引用方式:src="http://api.map.baidu.com/api?v=1.4&key=您的密钥&callback=initialize"
        </script>
    </head>
    
    <body>
    <div id="container"></div>
    <script type="text/javascript">
    // 百度地图API功能
    var jsondata=  window.localStorage.jsondata;
    
    if(jsondata){
        var map = new BMap.Map("container");
    //                        // 创建地图实例
        jsondata=JSON.parse(jsondata);
        var latcount=0;
        var lngcount=0;
        var points=[];
        jsondata=jsondata.sort(function(x,y){
            x.lastVisitAt> y.lastVisitAt
        });
        var datanew=[];
        for ( var i=0, ien=jsondata.length ; i<ien ; i++ ) {
            if(i>=1){
                if(jsondata[i].lastVisitAt==jsondata[i-1].lastVisitAt){
                }
                else{
                    datanew.push(jsondata[i]);
                }
            }else{
                datanew.push(jsondata[i]);
            }
           
        }
        datanew=datanew.sort(function(x,y){
            x.lastVisitAt> y.lastVisitAt
        });
        for(var i = 0,ien=datanew.length;i<ien;i++){
            latcount+=  datanew[i].lat;
            lngcount+=  datanew[i].lng;
            var point1 =new BMap.Point( datanew[i].lng,datanew[i].lat);
            points.push(point1);
            var marker = new BMap.Marker(point1);
            map.addOverlay(marker);
            var label = new BMap.Label(i,{offset:new BMap.Size(5,-5)});
            marker.setLabel(label);
            if(i>=1){
                var y=datanew[i].lat*1000-datanew[i-1].lat*1000;
                var x=datanew[i].lng*1000-datanew[i-1].lng*1000;
                var jia=0;
                if(x!=0){
                    var tanvalue=y/x;
                    var jiajiao=Math.atan(tanvalue)*180;
                    jia=-(90-jiajiao);
                }
                else{
                    if(y<0){
                        jia=180;
                    }
                }
                var vectorFCArrow = new BMap.Marker(point1, {
                    // 初始化方向向上的闭合箭头
                    icon: new BMap.Symbol(BMap_Symbol_SHAPE_FORWARD_CLOSED_ARROW, {
                        scale: 1,
                        strokeWeight: 1,
                        rotation: jia,//顺时针旋转30度
                        fillColor: 'red',
                        fillOpacity: 0.8
                    })
                });
                map.addOverlay(vectorFCArrow);
            }
        }
        var polyline = new BMap.Polyline(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});
        map.addOverlay(polyline);   //增加折线
        var centerpoint = new BMap.Point(lngcount/datanew.length, latcount/datanew.length);
        map.centerAndZoom(centerpoint, 15);
        map.enableScrollWheelZoom(true);
    }
        else{
        var map = new BMap.Map("container");
        var point = new BMap.Point(116.417854,39.921988);
        map.centerAndZoom(point, 15);
        var opts = {
            position : point,    // 指定文本标注所在的地理位置
            offset   : new BMap.Size(30, -30)    //设置文本偏移量
        }
        var label = new BMap.Label("欢迎使用小云安全管理系统", opts);  // 创建文本标注对象
        label.setStyle({
            color : "red",
            fontSize : "12px",
            height : "20px",
            lineHeight : "20px",
            fontFamily:"微软雅黑"
        });
        map.addOverlay(label);
        map.enableScrollWheelZoom(true);
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4435886.html
Copyright © 2011-2022 走看看