使用百度地图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 本类方法功能大多使用 ...
随机推荐
- Python并发编程-进程间数据共享
Manager中进程数据不安全 通过加锁解决 from multiprocessing import Manager,Process,Lock def main(dic,lock): lock.acq ...
- ORACLE PL/SQL编程详解(转)
原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...
- 【LeetCode two_pointer】11. Container With Most Water
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ...
- 使用matplotlib绘图(二)之柱状图
# 使用matplotlib绘制柱状图 import numpy as np import matplotlib.pyplot as plt # 设置全局字体,以支持中文 plt.rcParams[' ...
- [BZOJ1559][JSOI2009]密码(AC自动机)
http://www.lydsy.com/JudgeOnline/problem.php?id=1559 2009年的省选题虽然比起现在简单了不少,但对我来说还是很有挑战性的. 首先对于这种多串匹配问 ...
- 1.7(SQL学习笔记)游标
一.游标简介 SELECT语句得到的是一个结果集,有时我们需要对结果集中的单条数据进行处理. 这时就需要使用游标,游标定义时和一个SELECT语句的结果集关联在一起. 游标执行这个结果集,可以在结果集 ...
- 2015 UESTC 搜索专题A题 王之迷宫 三维bfs
A - 王之迷宫 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Des ...
- TortoiseSVN 修改密码
在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...
- Visual Studio 2010 使用 Git Extensions 连接 google code
下载最新版本 Git Extensions http://code.google.com/p/gitextensions/downloads/list Git Extensions 2.46 Wind ...
- 终于理解了什么是LGPL
GPL 我 们很熟悉的Linux就是采用了GPL.GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样.GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费 ...