mui 地图轨迹回放

<!doctype html>
<html>

<head>
        <meta charset="UTF-8">
        <title></title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <link rel="stylesheet" href="fonts1/iconfont.css" />
        <style type="text/css">
            #map {
                width: 100%;
                position: fixed;
                top: 44px;
                bottom: 0px;
                line-height: 200px;
                text-align: center;
                background: #FFFFFF;
            }
            .bhj{
                height: 40px;
                width: 40px;
                line-height: 40px;
            }
        </style>
    </head>

<body>
        <div class="mui-content">
            <div id="maps" style="width: 100%;height: 31rem;">

</div>
        </div>
        <nav class="mui-bar mui-bar-tab" style="background: #FFFFFF;text-align: center;padding-top: 0.5rem;">
            <div class="mui-input-row mui-input-range field-contain">
                <div style="float:left"  class="iconfont icon-bofang1 bhj" id="bofang"></div>
                <div style="float:left"  class="iconfont icon-zhongbo bhj" id="chongbo"></div>
            </div>

</nav>
        <script src="js/mui.js"></script>
        <script src="js/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=4IU3oIAMpZhfWZsMu7xzqBBAf6vMHcoa"></script><!--ak值可以自己百度地图申请-->
        <script type="text/javascript">
            mui.init();
            var map = null;
            var playSpeed = 160; //正常播放间隔是160毫秒,可以根据自己需求设置播放速率
            var pointstart = [];//开始点
            var pointend = [];//结束点
            var stopoff=false;//暂停开关false暂停 true开始
            var points = [];//所有线轨迹点集合
            var numi = 0;//当前执行数目
            var timer = null;//定时器
            var onwpoint=null;//轨迹播放时的当前点
            mui.plusReady(function() {
                plusReady();
            });
            function plusReady() {
                var view = plus.webview.currentWebview();
                map = new plus.maps.Map(‘maps‘); // 创建地图实例
                Geolocation()//设置地图
                getGuiJiData()//模拟服务器请求数据
                function getGuiJiData(){
                    var data={//服务器请求来的数据格式
                        "rows": [{
                            "POINT_Y": "108.916889",
                            "POINT_X": "34.259502"
                        }, {
                            "POINT_Y": "108.916889",
                            "POINT_X": "34.259502"
                        }, {
                            "POINT_Y": "108.916889",
                            "POINT_X": "34.259502"
                        }, {
                            "POINT_Y": "108.916889",
                            "POINT_X": "34.259502"
                        }, {
                            "POINT_Y": "108.916571",
                            "POINT_X": "34.259776"
                        }, {
                            "POINT_Y": "108.916591",
                            "POINT_X": "34.259779"
                        }, {
                            "POINT_Y": "108.916625",
                            "POINT_X": "34.25982"
                        }, {
                            "POINT_Y": "108.916657",
                            "POINT_X": "34.25992"
                        }, {
                            "POINT_Y": "108.916677",
                            "POINT_X": "34.260004"
                        }, {
                            "POINT_Y": "108.916703",
                            "POINT_X": "34.260071"
                        }, {
                            "POINT_Y": "108.916749",
                            "POINT_X": "34.260137"
                        }, {
                            "POINT_Y": "108.916784",
                            "POINT_X": "34.260157"
                        }],
                        "result": "success"
                    }
                    guiJiTotal = data.rows.length;
                    if (data.rows.length>=2) {
                        pointstart.push(new plus.maps.Point(data.rows[0].POINT_Y,data.rows[0].POINT_X));//把轨迹的第一个点设置为起点
                        //设置起点marker
                        var marker = new plus.maps.Marker(new plus.maps.Point(data.rows[0].POINT_Y, data.rows[0].POINT_X));
                        marker.setIcon("images/start.png");
                        marker.setLabel("起点");
                        map.addOverlay(marker);
                        
                        pointend.push(data.rows[data.rows.length - 1].POINT_Y,data.rows[data.rows.length - 1].POINT_X);//把轨迹的最后一个点设置为终点
                        //设置终点marker
                        var marker = new plus.maps.Marker(new plus.maps.Point( data.rows[data.rows.length - 1].POINT_Y,data.rows[data.rows.length - 1].POINT_X));
                        marker.setIcon("images/end.png");
                        marker.setLabel("终点");
                        map.addOverlay(marker);
                    }
                    //把请求的点集合存到points集合里
                    for (var i = 0; i < data.rows.length; i++) {
                        var longtitude =data.rows[i].POINT_Y;
                        var latitude =  data.rows[i].POINT_X;
                        points.push(new plus.maps.Point(longtitude, latitude));
                    }
                    //开始画轨迹
                    timer = setInterval(clock, playSpeed);
                }
                
                //定时绘制轨迹
                function showLine() {
                    if(stopoff==false){
                        return;
                    }
                    //两点画一个线
                    var polylineObj = null;
                    var point_line = [];
                    point_line[0] = new plus.maps.Point(points[numi].longitude, points[numi].latitude);
                    point_line[1] = new plus.maps.Point(points[numi+1].longitude, points[numi+1].latitude);
                    map.setCenter((point_line[1]));    //设置当前点为地图中心点
                    polylineObj = new plus.maps.Polyline(point_line);
                    polylineObj.setLineWidth(6);//设置线的粗细(Android和ios显示粗细不一样)
                    polylineObj.setStrokeColor("#c3421a");//设置线的颜色
                    map.addOverlay(polylineObj);
                    //设置当前运行点的marker
                    var marker = new plus.maps.Marker(point_line[1]);
                    marker.setIcon("images/1.png");
                    map.removeOverlay(onwpoint)
                    onwpoint=marker;
                    map.addOverlay(marker);
                    numi++;
                }
                function clock() {
                    showLine();
                    if (numi >= guiJiTotal - 1) {
                        stopoff=false;
                        $("#bofang").removeClass("icon-bofang ");
                        $("#bofang").addClass("icon-bofang1");
                        clearInterval(timer);
                    }
                    
                }
                //开始/暂停播放切换
                mui(".mui-bar").on("tap","#bofang",function(){//设置暂停,开始的图标,用阿里适量图。可以自己阿里适量图库下载
                    if(stopoff){
                        $("#bofang").removeClass("icon-bofang ");
                        $("#bofang").addClass("icon-bofang1");
                    }else{
                        $("#bofang").removeClass("icon-bofang1");
                        $("#bofang").addClass("icon-bofang ");
                    }
                    stopoff=!stopoff;
                })
                //重播
                mui(".mui-bar").on("tap","#chongbo",function(){
                    clearInterval(timer);
                    pointstart=[];
                    points=[];
                    pointend=[];
                    numi=0;
                    stopoff=true;
                    $("#bofang").removeClass("icon-bofang1");
                    $("#bofang").addClass("icon-bofang ");
                    map.clearOverlays();//删除地图所有覆盖物
                    getGuiJiData();
                })
            }

function Geolocation() {
                map.setZoom(18);//显示层级
                map.showUserLocation(true);
                map.showZoomControls(true);
                map.getUserLocation(function(state, point) {
                    if (0 == state) {
                        if (point.latitude == ‘5e-324‘) {
                            mui.toast("获取位置信息失败:请开启定位服务,进入系统【设置】>【隐私】>【定位服务】中打开开关!");
                        } else {
                            map.setCenter(point);
                            geoInf(point);

}
                    } else {
                        mui.toast("获取位置信息失败:请开启定位服务,进入系统【设置】>【隐私】>【定位服务】中打开开关!");
                    }

});
            }

function geoInf(point) {
                plus.maps.Map.reverseGeocode(point, {}, function(event) {
                    //获取当前地理位置
                    addressd = event.address; // 转换后的地理位置
                    var longit = point.longitude;//
                    var latid = point.latitude; //纬度
                    
                });
                
            }

</script>
    </body>

</html>

原文地址:https://www.cnblogs.com/zyb-722/p/10254515.html

时间: 2024-10-30 07:24:17

mui 地图轨迹回放的相关文章

使用GMap.NET类库,实现地图轨迹回放。(WPF版)

前言 实现轨迹回放,GMap.NET有对应的类GMapRoute.这个类函数很少,功能有限,只能实现简单的轨迹回放.要实现更复杂的轨迹回放,就需要自己动手了. 本文介绍一种方法,可以实现复杂的轨迹回放.有句话"功夫在诗外",GMap.NET给你提供了基本地图处理功能:但是不要让CMap.NET束缚了手脚.你需要有深刻理解地图实现原理,深入理解WPF动画的原理,才能到达随心所欲.最终的效果如下: GMap.NET 显示原理 地图就是由许多方格"瓦片"组合而来.当你移动

百度地图轨迹回放,自定义路书,边走边画线

在原有的百度路书的基础上,做了修改,使其能实现边走边画线的需求. 源代码如下,其中您的密钥要换成自己的,如果不换,则需要粘贴到百度API示例里面的GPS路书的编辑器中才能运行 <html lang="en"> <head> <meta charset="utf-8" /> <title>轨迹回放(路书)</title> <style type="text/css"> body

使用百度地图API实现轨迹回放

调用百度地图API实现路线的轨迹回放功能其实很简单,只要搞懂以下几点即可: 1.需要用Polyline方法先绘制好路线图 2.用Marker添加标注点 3.关键一步,通过结合定时器,使用Marker创建的标注点实例的setPosition改变标注点位置,实现播放功能 代码分享,直接复制即可使用 [html] view plaincopy <!DOCTYPE html> <html> <head> <meta name="viewport" co

百度地图利用DrivingRoute做轨迹回放

 <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"

如何实现LBS轨迹回放功能?含多平台实现代码

本篇文章告诉您,如何实现轨迹回放.并且提供了web端,iOS端,Android端3个平台的轨迹回放代码.拷贝后可以直接使用.另外,文末有小彩蛋,算是开发者的福利. Web端/JavaScript 实现轨迹回放有2个主要功能需要实现,1个是定位取点,1个是按照轨迹慢慢移动Marker. 如何实现定位取点,可以看之前的文章:http://www.cnblogs.com/milkmap/p/4962085.html 本篇文章里的定位点,我就直接假设一堆点,可以push到数组里. var marker,

GPS/轨迹追踪、轨迹回放、围栏控制

折腾一个多月终于弄完了这个项目,起初都未曾接触GPS/轨迹追踪.轨迹回放.圈划围栏...等一些在百度地图或者Googel地图操作的一些业务,后端的业务相对来说简单点 cas单点登录,mongdb灵活的数据存储方式,ActiveMQ消息推送.Redis存储... 这篇的主要篇幅主要来讲述下项目中的一些地图上棘手的问题 接口测试数据: 1.GPS数据接收接口对于日期格式的转化 作为码农都知道Web接口传输的数据都是以Json的数据形式传输,日期格式不同是我们头疼的事情,当然要是我们自己给App端,云

单次轨迹回放

已知有一段轨迹数据,点击回放按钮,小车沿着路线自动的往前运动,播放完毕也就结束了 public class MoveSingleThread extends Thread{ private List<LatLng> mLatLngList; private Marker mCarMarker; public MoveSingleThread(List<LatLng> latLngs, Marker marker) { super(); mLatLngList = latLngs;

iOS 百度地图 轨迹记录 道路贴合

最近在做一个小的demo,试一下轨迹记录. 记录轨迹需要不停的获取位置记录到数据库. 在画折现的时候会在道路拐角处直接连线,不会与道路贴合,在这说一下我的解决方案. 我调用了百度地图的路径规划api.这样就能实现路径贴合功能了. 在此附上dome:点击打开链接 强调:这个dome是真机上运行,在模拟器上会报错.下载的时候注意一下. 由于各种原因图片是用手机拍的. 上张图看看: 核心代码: 调用驾车线路规划,规划出从这点到那点的线路然后画出路线,生成的线路在下面函数中获得. - (void)onG

GPS功能:百度路书自定义【轨迹回放】

如题所述:百度的编辑界面很直观,修改后就可以运行,地址:http://developer.baidu.com/map/jsdemo.htm#c2_8: 因为同事研究了一下午结果都没搞出来,他copy百度示例的代码写的很混乱,贴来贴去的,结果把自己陷进去了,看到如此情形实在不忍心啊,(毕竟是demo,百度提供的代码大可以大刀阔斧的修改,不用吝啬)于是就参与了进去.先看API,然后看示例分析,必须要修改生成自己的轨迹线,如果能找到回到函数对轨迹数据进行自定义问题就解决了,果不其然就是这样的.关键还是