zoukankan      html  css  js  c++  java
  • 使用“天地图”实现“百度地图”的 GPS单点沿线运动,来模拟物体运动轨迹。

        一 . 最近在弄智能调度系统,就需要在地图上实现模拟车辆的某一个时间段的运动轨迹。

        百度地图已经有了这个Demo的示例。附上GPS-单点沿线运动Demo链接:http://developer.baidu.com/map/jsdemo.htm#c2_5

        二 . 在这个Demo上进行改造的百度地图如下图所示:

       

        百度地图实现代码如下:

       

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
            body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
        </style>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=TUaQdFgQ4GTsZjGGRCHWDCsx"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/library/CurveLine/1.5/src/CurveLine.min.js"></script>
        <title>百度地图--单个标注点沿线的轨迹运动</title>
    </head>
    <body>
        <div id="allmap"></div>
    </body>
    </html>
    <script type="text/javascript">
        // 百度地图API功能
        var curve;
        var map = new BMap.Map("allmap");
        map.centerAndZoom(new BMap.Point(116.403694,39.91582), 12);
        var myIcon = new BMap.Icon("http://developer.baidu.com/map/jsdemo/img/Mario.png", new BMap.Size(32, 70), {    //小车图片
            //offset: new BMap.Size(0, -5),    //相当于CSS精灵
            imageOffset: new BMap.Size(0, 0)    //图片的偏移量。为了是图片底部中心对准坐标点。
          });
        var points;
        var ps=[];
        ps.push(new BMap.Point(116.306533,39.890581));
        ps.push(new BMap.Point(116.403694,39.91582));
        ps.push(new BMap.Point(116.475558,39.962733));
        ps.push(new BMap.Point(116.555472,39.916706));
        ps.push(new BMap.Point(116.529025,39.869762));
        
    
        window.run = function (){
            var pts = ps;    //通过驾车实例,获得一系列点的数组
                var paths = pts.length;    //获得有几个点
                var carMk = new BMap.Marker(pts[0],{icon:myIcon});
                map.addOverlay(carMk);
                points = [pts[0],pts[1]];
                    curve = new BMapLib.CurveLine(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5}); //创建弧线对象                
                    map.addOverlay(curve); //添加到地图中
                    carMk.setPosition(pts[1]);
                i=1;
                function resetMkPoint(i){
                    points = [pts[i-1],pts[i]];
                    curve = new BMapLib.CurveLine(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5}); //创建弧线对象                
                    map.addOverlay(curve); //添加到地图中
                    carMk.setPosition(pts[i]);
                    if(i < paths){
                        setTimeout(function(){
                            i++;
                            resetMkPoint(i);
                        },500);
                    }
                }
                setTimeout(function(){
                    resetMkPoint(2);
                },500)    
        }
        setTimeout(function(){
            run();
        },100);
    </script>

        参考百度地图代码,使用天地图来模拟的页面效果。如下图所示:

     

     天地图实现代码如下:

    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta name="keywords" content="天地图" charset="utf-8"/> 
    <title>天地图-地图API-范例-画线</title> 
    <script language="javascript" src="http://api.tianditu.com/js/maps.js"></script> 
    </head> 
    <body>
        <button type="button" onclick="goRun()">Click Me!</button>
        <br/>
        <div id="mapDiv" style="position:absolute;100%; height:90%"></div>
    </body> 
    <script language="javascript"> 
        var map,zoom = 11,points,line; 
        var myIcon = new TIcon("http://api.tianditu.com/img/map/markerA.png",new TSize(19,27),{anchor:new TPixel(9,27)});
        //初始化地图对象 
        map=new TMap("mapDiv"); 
        //设置显示地图的中心点和级别 
        map.centerAndZoom(new TLngLat(116.403694,39.91582),zoom); 
         
        points = []; 
        points.push(new TLngLat(116.306533,39.890581));
            points.push(new TLngLat(116.403694,39.91582));
            points.push(new TLngLat(116.475558,39.962733));
            points.push(new TLngLat(116.555472,39.916706));
        points.push(new TLngLat(116.529025,39.869762));
    
        function goRun(){
            var pts = points;    //通过驾车实例,获得一系列点的数组
                var paths = pts.length;    //获得有几个点
                var carMk = new TMarker(pts[0],{icon:myIcon});//地图添加自定义标识
                points = [pts[0],pts[1]];
                line = new TPolyline(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5}); //创建线对象
                map.addOverLay(carMk);
                map.addOverLay(line); //添加到地图中
                carMk.setLngLat(pts[1]);
                function resetMkPoint(i){
                    carMk.setLngLat(pts[i]);
                    points = [pts[i-1],pts[i]];
                    line = new TPolyline(points, {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5}); //创建线对象
                    map.addOverLay(line); //添加到地图中
                    if(i < paths){
                        setTimeout(function(){
                            i++;
                            resetMkPoint(i);
                        },500);
                    }
                }
                setTimeout(function(){
                    resetMkPoint(2);
                },500)
        
        }
    </script> 
    </html>

     三 . 总结。

          天地图与百度地图的代码很相似,天地图的功能,基本可以通过百度地图代码来改造,虽然天地图示例Demo没有百度地图全面,但是通过百度地图对比来开发,基本的功能实现不难。

  • 相关阅读:
    解决mac中wxpython对64位的支持
    python翻译词典实例
    php断点续传
    ubuntu配置telnet服务
    *p++,*++p,*(p++),*(++p)
    在main函数前后执行的函数之 C语言
    串行通讯协议--起止式异步通讯协议(UART)
    TTL电平, RS232电平以及CMOS电平的区别
    C 语言的关键字static 和C++ 的关键字static 有什么区别
    C语言各种数据类型取值范围
  • 原文地址:https://www.cnblogs.com/bugzone/p/baidumap.html
Copyright © 2011-2022 走看看