更改

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>百度离线版2.0DEMO</title>
    <script type="text/javascript" src="http://api.map.baidu.com/getscript?v=2.0&ak=DBkKXiL5XbesfoTn4PKoMXVCzSMXsTOn"></script><!-- 这里的ak自己去百度获取-->
    <script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js"></script>
    <link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />
    <!--加载检索信息窗口-->
    <script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
    <link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />
    <!--<link rel="stylesheet" type="text/css" href="css/bmap.css"/>-->
</head>
<body>
<div style="width:520px;height:340px;border:1px solid gray" id="container"></div>
<input type="button" id="btn" name="btn" value="加点" onclick="addPoint()" />
<input type="button" id="btn1" name="btn1" value="移除事件" onclick="removeEvent()" />
<div id="result"></div>
<div id="aa"></div>
<button id="run">开始</button>
<button id="stop">停止</button>
<button id="pause">暂停</button>
<button id="qingchu">清楚</button>
<button id="hide">隐藏信息窗口</button>
<button id="show">展示信息窗口</button>
</body>
</html>
<script type="text/javascript">
    var arrPois=[new BMap.Point(116.403984,39.914004) ];//一个数组,用来存放路书的坐标点
    var map = new BMap.Map("container",{mapType: BMAP_NORMAL_MAP});      //设置卫星图为底图
    var point = new BMap.Point(111.404, 40.915);    // 创建点坐标
    map.centerAndZoom(point,5);                     // 初始化地图,设置中心点坐标和地图级别。

    //map.addControl(new BMap.MapTypeControl());
    map.addControl(new BMap.NavigationControl());
    map.enableScrollWheelZoom();                  // 启用滚轮放大缩小。
    map.enableKeyboard();                         // 启用键盘操作。
    //map.setCurrentCity("北京");          // 设置地图显示的城市 此项是必须设置的

    //
    function savePoint(){//鼠标示例  鼠标点击拾取坐标点
        alert(document.getElementById("test").value);
        infoWindow.close();
        infoWindow=[];
    }
    function del(arg){//点击时 地图上添加的点错误时删除
        for(var i=0;i<arr.length;i++){
            if(arr[i].k==arg){
                map.removeOverlay(arr[i].marker);
                break;
            }
        }
    }
    function addPoint(){//往地图上加点
        map.addEventListener('click', clickEvent);
    }
    function removeEvent(){//移除click事件
        map.removeEventListener('click', clickEvent);
        infoWindow.close();
        infoWindowEdit.close();
    }
    var k=0;//用来区别marker
    var str = "";
   // var html = new Array();
    var infoWindow; // 将消息框添加到地图中
    var infoWindowEdit;
    var arr=new Array();//存放添加的点  方便删除
    var clickEvent=function(e){
        var lat=e.point.lat;
        var lng=e.point.lng;
        var point  = new BMap.Point(lng, lat);
        var marker = new BMap.Marker(point);  // 创建标注
        arrPois.push(new BMap.Point(lng,lat));//往路书的坐标点数组添加数据
        map.addOverlay(marker);
        arr.push({"lat":lat,"lng":lng,"point":point,"marker":marker,"k":++k});

      //  html.push(lat,lng);
        //html.push();
        //str+="";
        str += lat+"---"+lng+",";
        console.log(str);
        document.getElementById('aa').innerText = str;




        marker.addEventListener("click", function (e) { //点击时才打开消息框
            var newLat=lat;
            var newLng=lng;
            var m;
            for(var i=0;i<arr.length;i++){
                if(arr[i].lat==newLat && arr[i].lng==newLng){
                    m=arr[i].k;
                }
            }
            var val=newLat+"---"+newLng;
            var html = [];
            html.push("<div class=\"detailCarTip\" style='width:350px;height:100px'  >");
            html.push("<div style='font-size:14px;font-weight:bold;width:350px;'>" + "(" + "车辆信息title" + ")</div>");  //车辆信息
           // html.push("<div style='border-bottom:1px solid #ff0000;style='width:350px;height:100px'></div>");     // 红线
            html.push("<table cellpadding=\"0\" cellspacing=\"0\" style='width:350px;height:100px' ");
            html.push("<tr>");
            html.push("<td><label>"+ "位置:" +"</label><input type='text' id='test' name='test' value="+"\""+val+"\""+"/></td>");//判断是否同一个marker
            // html.push("<td><input type='button' id='test' name='test' value='保存' onclick='savePoint()' /></td><td><input type='button' id='test' name='test' value='删除' onclick=\'del("+m+")\' /></td></td><td><input type='button' id='test' name='test' value='完成' onclick='removeEvent()' /></td>"
            // );
            html.push("</tr>");
            html.push("</table>");
            html.push("</div>");
            infoWindowEdit = new BMap.InfoWindow(html.join(""), {enableMessage: false,enableCloseOnClick:false});  // 创建信息窗口对象
            marker.openInfoWindow(infoWindowEdit); //开启信息窗口
        });

    }

    //新增方法  先创建 infow 这样才能在调用map.openInfoWindow(infoWindow,point);时  默认添加图标就是打开info窗口的

    /*

     function ceateInfo(map,marker,address,mft_linkman,mft_mobile,point){
    var infoWindow=[];
    var html = [];
            html.push("<div style='width:250px;height:80px'  >");
            html.push("<div style='font-size:14px;font-weight:bold;width:250px;'>自提地址信息</div>");
            html.push("<div style='border-bottom:1px solid #ff0000;style='width:250px;height:80px'></div>");     // 红线
            html.push("<table cellpadding=\"0\" cellspacing=\"0\" style='width:250px;height:80px' ");
            html.push("<tr>");
            html.push("<td>自提联系人:" + mft_linkman +"</td>");
            html.push("</tr>");
            html.push("<tr>");
            html.push("<td>自提联电话:" + mft_mobile +"</td>");
            html.push("</tr>");
            html.push("<tr>");
            html.push("<td colspan='2'>自提联地址:" + address + "</td>");
            html.push("</tr>");
            html.push("</table>");
            html.push("</div>");
            infoWindow = new BMap.InfoWindow(html.join(""), {enableMessage: false});  // 创建信息窗口对象
    marker.addEventListener("click", function () {
           marker.openInfoWindow(infoWindow); //开启信息窗口
       });
    map.openInfoWindow(infoWindow,point);
     }
    */
    //开启绘画功能
    var circle = new BMap.Circle(point,1000);
    circle.setFillColor("#A6CBA1"); //填充颜色
    circle.setStrokeColor("#A6CBA1"); //边线颜色
    map.addOverlay(circle);            //增加圆

    var drawingManager = new BMapLib.DrawingManager(map, {
        isOpen: false, //是否开启绘制模式
        enableDrawingTool: true, //是否显示工具栏
        enableCalculate: false,
        drawingToolOptions: {
            anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
            offset: new BMap.Size(5, 5), //偏离值
            drawingModes : [BMAP_DRAWING_CIRCLE,BMAP_DRAWING_POLYLINE,BMAP_DRAWING_POLYGON,BMAP_DRAWING_RECTANGLE],
            drawingTypes : [
                // BMAP_DRAWING_MARKER,
                BMAP_DRAWING_CIRCLE,//圆的样式
                BMAP_DRAWING_POLYLINE,
                BMAP_DRAWING_POLYGON,
                BMAP_DRAWING_RECTANGLE //矩形的样式
            ]
        },
    });


    //路书,轨迹回放
    var lushu;
    // 实例化一个驾车导航用来生成路线
    //  var drv = new BMap.DrivingRoute('北京', {
    //     onSearchComplete: function(res) {
    //        if (drv.getStatus() == BMAP_STATUS_SUCCESS) {
    //  var plan = res.getPlan(0);
    // var arrPois =[];
    //                for(var j=0;j<plan.getNumRoutes();j++){
    //   var route = plan.getRoute(j);
    //   arrPois= arrPois.concat(route.getPath());
    // }

    //    map.addOverlay(new BMap.Polyline(arrPois, {strokeColor: '#111'})); //不画线
    map.setViewport(arrPois);
    marker=new BMap.Marker(arrPois[0],{
        icon  : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)})
    });
    var label = new BMap.Label("粤A30780",{offset:new BMap.Size(0,-30)});
    label.setStyle({border:"1px solid rgb(204, 204, 204)",color: "rgb(0, 0, 0)",borderRadius:"10px",padding:"5px",background:"rgb(255, 255, 255)",});
    marker.setLabel(label);

    map.addOverlay(marker);
    BMapLib.LuShu.prototype._move=function(initPos,targetPos,effect) {
        var pointsArr=[initPos,targetPos];  //点数组
        var me = this,
            //当前的帧数
            currentCount = 0,
            //步长,米/秒
            timer = 10,
            step = this._opts.speed / (1000 / timer),
            //初始坐标
            init_pos = this._projection.lngLatToPoint(initPos),
            //获取结束点的(x,y)坐标
            target_pos = this._projection.lngLatToPoint(targetPos),
            //总的步长
            count = Math.round(me._getDistance(init_pos, target_pos) / step);
        //显示折线 syj201607191107
        this._map.addOverlay(new BMap.Polyline(pointsArr, {
            strokeColor : "#111",
            strokeWeight : 5,
            strokeOpacity : 0.5
        })); // 画线
        //如果小于1直接移动到下一点
        if (count < 1) {
            me._moveNext(++me.i);
            return;
        }
        me._intervalFlag = setInterval(function() {
            //两点之间当前帧数大于总帧数的时候,则说明已经完成移动
            if (currentCount >= count) {
                clearInterval(me._intervalFlag);
                //移动的点已经超过总的长度
                if(me.i > me._path.length){
                    return;
                }
                //运行下一个点
                me._moveNext(++me.i);
            }else {
                currentCount++;
                var x = effect(init_pos.x, target_pos.x, currentCount, count),
                    y = effect(init_pos.y, target_pos.y, currentCount, count),
                    pos = me._projection.pointToLngLat(new BMap.Pixel(x, y));
                //设置marker
                if(currentCount == 1){
                    var proPos = null;
                    if(me.i - 1 >= 0){
                        proPos = me._path[me.i - 1];
                    }
                    if(me._opts.enableRotation == true){
                        me.setRotation(proPos,initPos,targetPos);
                    }
                    if(me._opts.autoView){
                        if(!me._map.getBounds().containsPoint(pos)){
                            me._map.setCenter(pos);
                        }
                    }
                }
                //正在移动
                me._marker.setPosition(pos);
                //设置自定义overlay的位置
                me._setInfoWin(pos);
            }
        },timer);
    };
    lushu = new BMapLib.LuShu(map,arrPois,{
        defaultContent:"粤A30780",//"从天安门到百度大厦"
        autoView:true,//是否开启自动视野调整,如果开启那么路书在运动过程中会根据视野自动调整
        icon  : new BMap.Icon('http://developer.baidu.com/map/jsdemo/img/car.png', new BMap.Size(52,26),{anchor : new BMap.Size(27, 13)}),
        speed: 100,
        enableRotation:true,//是否设置marker随着道路的走向进行旋转
        landmarkPois:[
            {lng:116.306954,lat:40.05718,html:'加油站',pauseTime:2}
        ]

    });

    marker.addEventListener("click",function(){
        marker.enableMassClear();   //设置后可以隐藏改点的覆盖物
        marker.hide();
        lushu.start();
        //map.clearOverlays();  //清除所有覆盖物
    });
    //}
    //        }
    //  });
    //drv.search('天安门', '百度大厦');
    // lushu.start();
    // lushu.pause();
    //绑定事件
    $("run").onclick = function(){
        marker.enableMassClear(); //设置后可以隐藏改点的覆盖物
        marker.hide();
        lushu.start();
        // map.clearOverlays();    //清除所有覆盖物
    }
    $("stop").onclick = function(){
        lushu.stop();
    }
    $("pause").onclick = function(){
        lushu.pause();
    }
    $("hide").onclick = function(){
        lushu.hideInfoWindow();
    }
    $("show").onclick = function(){
        lushu.showInfoWindow();
    }
    $("qingchu").onclick = function(){
        map.clearOverlays();
        arrPois.splice(1,5000);
        //html.splice(0,51);
        str = "";
        //document.getElementById('aa').innerText = str;
        //console.log(arrPois);
        document.getElementById('aa').innerHTML = "";
    }
    function $(element){
        return document.getElementById(element);
    }

</script>

 

posted @ 2018-04-10 00:16  君陌丶  阅读(153)  评论(0编辑  收藏  举报