使用百度地图API实现轨迹回放
调用百度地图API实现路线的轨迹回放功能其实很简单,只要搞懂以下几点即可:
1.需要用Polyline方法先绘制好路线图
2.用Marker添加标注点
3.关键一步,通过结合定时器,使用Marker创建的标注点实例的setPosition改变标注点位置,实现播放功能
代码分享,直接复制即可使用
- <!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>Track</title>
- <style type="text/css">
- html{height:100%}
- body{height:100%;margin:0px;padding:0px}
- #controller{width:100%; border-bottom:3px outset; height:30px; filter:alpha(Opacity=100); -moz-opacity:1; opacity:1; z-index:10000; background-color:lightblue;}
- #container{height:100%}
- </style>
- <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=D2b4558ebed15e52558c6a766c35ee73"></script>
- <script type="text/javascript">
- //获取所有点的坐标
- var points = [
- new BMap.Point(114.00100, 22.550000), new BMap.Point(114.00130, 22.550000),
- new BMap.Point(114.00160, 22.550000), new BMap.Point(114.00200, 22.550000),
- new BMap.Point(114.00300, 22.550500), new BMap.Point(114.00400, 22.550000),
- new BMap.Point(114.00500, 22.550000), new BMap.Point(114.00505, 22.549800),
- new BMap.Point(114.00510, 22.550000), new BMap.Point(114.00515, 22.550000),
- new BMap.Point(114.00525, 22.550400), new BMap.Point(114.00537, 22.549500)
- ];
- var map; //百度地图对象
- var car; //汽车图标
- var label; //信息标签
- var centerPoint;
- var timer; //定时器
- var index = 0; //记录播放到第几个point
- var followChk, playBtn, pauseBtn, resetBtn; //几个控制按钮
- function init() {
- followChk = document.getElementById("follow");
- playBtn = document.getElementById("play");
- pauseBtn = document.getElementById("pause");
- resetBtn = document.getElementById("reset");
- //初始化地图,选取第一个点为起始点
- map = new BMap.Map("container");
- map.centerAndZoom(points[0], 15);
- map.enableScrollWheelZoom();
- map.addControl(new BMap.NavigationControl());
- map.addControl(new BMap.ScaleControl());
- map.addControl(new BMap.OverviewMapControl({isOpen: true}));
- //通过DrivingRoute获取一条路线的point
- var driving = new BMap.DrivingRoute(map);
- driving.search(new BMap.Point(114.00100, 22.550000), new BMap.Point(113.95100, 22.550000));
- driving.setSearchCompleteCallback(function() {
- //得到路线上的所有point
- points = driving.getResults().getPlan(0).getRoute(0).getPath();
- //画面移动到起点和终点的中间
- centerPoint = new BMap.Point((points[0].lng + points[points.length - 1].lng) / 2, (points[0].lat + points[points.length - 1].lat) / 2);
- map.panTo(centerPoint);
- //连接所有点
- map.addOverlay(new BMap.Polyline(points, {strokeColor: "black", strokeWeight: 5, strokeOpacity: 1}));
- //显示小车子
- label = new BMap.Label("", {offset: new BMap.Size(-20, -20)});
- car = new BMap.Marker(points[0]);
- car.setLabel(label);
- map.addOverlay(car);
- //点亮操作按钮
- playBtn.disabled = false;
- resetBtn.disabled = false;
- });
- }
- function play() {
- playBtn.disabled = true;
- pauseBtn.disabled = false;
- var point = points[index];
- if(index > 0) {
- map.addOverlay(new BMap.Polyline([points[index - 1], point], {strokeColor: "red", strokeWeight: 1, strokeOpacity: 1}));
- }
- label.setContent("经度: " + point.lng + "<br>纬度: " + point.lat);
- car.setPosition(point);
- index++;
- if(followChk.checked) {
- map.panTo(point);
- }
- if(index < points.length) {
- timer = window.setTimeout("play(" + index + ")", 200);
- } else {
- playBtn.disabled = true;
- pauseBtn.disabled = true;
- map.panTo(point);
- }
- }
- function pause() {
- playBtn.disabled = false;
- pauseBtn.disabled = true;
- if(timer) {
- window.clearTimeout(timer);
- }
- }
- function reset() {
- followChk.checked = false;
- playBtn.disabled = false;
- pauseBtn.disabled = true;
- if(timer) {
- window.clearTimeout(timer);
- }
- index = 0;
- car.setPosition(points[0]);
- map.panTo(centerPoint);
- }
- </script>
- </head>
- <body onload="init();">
- <div id="controller" align="center">
- <input id="follow" type="checkbox"><span style="font-size:12px;">画面跟随</span></input>
- <input id="play" type="button" value="播放" onclick="play();" disabled />
- <input id="pause" type="button" value="暂停" onclick="pause();" disabled />
- <input id="reset" type="button" value="重置" onclick="reset()" disabled />
- </div>
- <div id="container"></div>
- </body>
- </html>
使用百度地图API实现轨迹回放的更多相关文章
- 百度地图API 绘制轨迹历史
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图
原文:百度地图API二:根据标注点坐标范围计算显示缩放级别zoom自适应显示地图 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liusaint1992/ ...
- 【百度地图API】北京周边7日游——图标按路线轨迹行动
原文:[百度地图API]北京周边7日游--图标按路线轨迹行动 任务描述: 春节就要来啦~酸奶小妹的妈妈要从遥远的重庆,来到北京过春节呢!酸奶小妹忙着给妈妈计划,北京周边的旅游线路.计划好路线后,就开始 ...
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
百度地图,实现车辆轨迹绘制 实现思路: 1.根据经纬度实现车辆轨迹绘制 2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标 3.将每两个坐标间连 ...
- 百度地图api描绘车辆历史轨迹图
最近公司在做项目需需求:车辆定位后在地图显示历史轨迹的功能 一开始使用了google的地图api,但是发现会一直关闭,索性支持下国产,使用了百度地图api search方法把两个点连接成线后,会出现起 ...
- web端百度地图API实现实时轨迹动态展现
最近在工作中遇到了一个百度地图api中的难题,恐怕有的程序员可能也遇到过.就是实时定位并显示轨迹,网上大部分都是通过创建polyline对象贴到地图上.当然,百度地图的画线就是这样实现的,但是好多人会 ...
- 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明
前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...
- 吐槽贴:百度地图 api 封装 的实用功能 [源码下载]
ZMap 类 功能介绍 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐 ...
- 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例 [源码下载]
相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修正版[ZMap.js] 实例源码! ZMap.js 本类方法功能大多使用 ...
随机推荐
- Linux下定时备份MySQL数据库的Shell脚本
Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...
- shell 文件传 参数
n cross-platform, lowest-common-denominator sh you use: #!/bin/sh value=`cat config.txt` echo " ...
- HDU 6203 ping ping ping [LCA,贪心,DFS序,BIT(树状数组)]
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=6203] 题意 :给出一棵树,如果(a,b)路径上有坏点,那么(a,b)之间不联通,给出一些不联通的点 ...
- eclipse 怎么 直接查看 文件所在位置 显示在文件管理器中。用浏览器浏览。
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha eclipse 怎么 直接查看 文件所在位置 显示在文件管理器中.用浏览器浏览.
- 【最大独立集】BZOJ3175- [Tjoi2013]攻击装置
[题目大意] 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照“日”字攻击其周围的 8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2),(x+2, ...
- 【BZOJ-2734】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- Effective Java部分读书笔记
2.创建和销毁对象 1.使用静态工厂方法代替构造器 一般使用构造器(构造函数)创建对象实例,还可以使用静态工厂方法来创建对象实例. 优点 使用静态工厂方法代替构造器创建对象实例有以下优点: 1)静态构 ...
- 【原创】LogCat信息演示Activity生命周期
界面如下:注意:这是在手机.竖屏状态下! (一)1个Activity /** * 7个方法 * 测试1个Activity的生命周期 * * LogCat: ...
- 破解MyEclipse2015 stable3.0(亲测可用)
整个破解过程最好断网: 1.安装好MyEclipse2015 stable3后,打开设置好工作目录后,退出.2.将plugins文件夹中的文件拷贝到myeclipse安装目录的plugins文件夹下, ...
- debian8上安装pyspider - pyspider中文文档 - pyspider中文网
debian8上安装pyspider - pyspider中文文档 - pyspider中文网 #apt-get install python python-dev python-distribu ...