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>
  • 相关阅读:
    驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
    模块化Java:声明式模块化
    模块化Java:静态模块化
    用 Apache Tika 理解信息内容
    Refactoring: Encapsulate Collection
    新型的几乎万能的数据结构CDO
    CDO数据结构基础(1) 转载
    模块化Java简介(转载infoq)
    模块化Java:动态模块化
    责任链模式(C++)
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4435886.html
Copyright © 2011-2022 走看看