使用百度地图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 本类方法功能大多使用 ...
随机推荐
- centos 6.5 安装mysql 5.6.35--libc.so.6(GLIBC_2.14)(64bit)
[参考] http://blog.csdn.net/cpplang/article/details/8462768 http://www.linuxidc.com/Linux/2015-04/1160 ...
- linux——(7)了解shell
概念一:什么是shell 用户用来和内核交互的东西,他相当一个接口,我们通过这个接口调用别的程序,然后他调用内核来帮我们完成程序功能.shell有很多种类,他们之间有部分区别,Linux默认使用bas ...
- Linux-数据库1
数据库介绍 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种 ...
- CODEVS1358【DFS/状压DP】
题目链接[http://codevs.cn/problem/1358/] 题意:这个游戏在一个有10*10个格子的棋盘上进行,初始时棋子位于左上角,终点为右下角,棋盘上每个格子内有一个0到9的数字,每 ...
- JZYZOJ1237 教授的测试 dfs
http://172.20.6.3/Problem_Show.asp?id=1237 锻炼搜索的代码能力,不错的题. 开始对dfs到底向下传递什么搞不清楚,需要想一下,noip难度的题还有这种情况 ...
- bzoj 1009: [HNOI2008]GT考试 -- KMP+矩阵
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数X1X2.. ...
- WebSQL的基本使用过程
1.创建或打开数据库(openDatabase) var db = openDatabase('dbname', '1.0', 'discription', 2 * 1024); // 目前测试只有C ...
- 小识.htaccess文件
.htaccess文件(或者"分布式配置文件")提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户 ...
- python开发_python操作mysql数据库
如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装 本篇blog是有关python操作mysql数据的相关内容. 我做了一个demo: 先看运行效果: mys ...
- Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用
Android 中的 String, StringBuffer 和 StringBuilder 是移动手机开发中经常使用到的字符串类.做为基础知识是必须要理解的,这里做一些总结. A.区别 可以从以下 ...