百度地图API,根据经纬度实现车辆移动轨迹绘制
2017-03-31 21:10
2096 查看
百度地图,实现车辆轨迹绘制
实现思路:
1.根据经纬度实现车辆轨迹绘制
2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标
3.将每两个坐标间连线起来,形成连贯的轨迹线路
4.生成下一个图标后删除上一个绘制的图标,形成小车移动动画感
5.本例使用的是临近的随机坐标点
6.初学者,欢迎大家交流学习
7.查看实例
代码:
[html] view
plain copy
<!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" <
18697
/span>/>
<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=E06eb9d756d0eafc722effb355657b4c"></script>
<title>车辆运行轨迹测试</title>
<script src="http://c.cnzz.com/core.php"></script></head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
var startLong = 106.652024;
var startLat = 26.617221;
var endLong = 106.652024;
var endLat = 26.614221;
var startLongR = 106.652024;
var startLatR = 26.617221;
var endLongR = 106.652024;
var endLatR = 26.614221;
var linesPoints = null;
// 百度地图API功能
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(new BMap.Point(106.652024,26.617221), 15); // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.setCurrentCity("贵阳"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
setInterval(goWay,500);
var carMk;
var myIcon = new BMap.Icon("http://sandbox.runjs.cn/uploads/rs/101/wmbvrxnx/kache.png", new BMap.Size(37,25), {imageOffset: new BMap.Size(0, 0)});//卡车
function goWay(){
startLong = endLong;
startLat = endLat;
endLong = getRound(endLong);
endLat = getRound(endLat);
drawIcon(startLong,startLat,endLong,endLat);
//drawRedLine();
}
function getRound(temp){
var i = Math.round(Math.random()*9+1);
if(i%2==0){
return temp + i*0.0001;
}else{
return temp - i*0.0001;
}
}
function getRound1(temp){
var i = Math.round(Math.random()*9+1);
if(i%2==0){
return temp + i*0.0002;
}else{
return temp - i*0.0002;
}
}
function drawGreenLine(startLong,startLat,endLong,endLat){
var polyline = new BMap.Polyline([
new BMap.Point(startLong,startLat),//起始点的经纬度
new BMap.Point(endLong,endLat)//终止点的经纬度
], {strokeColor:"green",//设置颜色
strokeWeight:3, //宽度
strokeOpacity:1});//透明度
map.addOverlay(polyline);
}
function drawRedLine(){
startLongR = endLongR;
startLatR = endLatR;
endLongR = getRound1(endLongR);
endLatR = getRound1(endLatR);
var polyline1 = new BMap.Polyline([
new BMap.Point(startLongR,startLatR),//起始点的经纬度
new BMap.Point(endLongR,endLatR)//终止点的经纬度
], {strokeColor:"red",//设置颜色
strokeWeight:3, //宽度
strokeOpacity:1});//透明度
map.addOverlay(polyline1);
}
function drawIcon(startLong,startLat,endLong,endLat){
if(carMk){
map.removeOverlay(carMk);
}
carMk = new BMap.Marker(
new BMap.Point(endLong,endLat),//起始点的经纬度
{icon:myIcon});
map.addOverlay(carMk);
drawGreenLine(startLong,startLat,endLong,endLat);
}
</script>
实现思路:
1.根据经纬度实现车辆轨迹绘制
2.使用百度地图API的两个覆盖物实现,Polyline(折线)绘制轨迹,Marker(图标)绘制小车图标
3.将每两个坐标间连线起来,形成连贯的轨迹线路
4.生成下一个图标后删除上一个绘制的图标,形成小车移动动画感
5.本例使用的是临近的随机坐标点
6.初学者,欢迎大家交流学习
7.查看实例
代码:
[html] view
plain copy
<!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" <
18697
/span>/>
<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=E06eb9d756d0eafc722effb355657b4c"></script>
<title>车辆运行轨迹测试</title>
<script src="http://c.cnzz.com/core.php"></script></head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
var startLong = 106.652024;
var startLat = 26.617221;
var endLong = 106.652024;
var endLat = 26.614221;
var startLongR = 106.652024;
var startLatR = 26.617221;
var endLongR = 106.652024;
var endLatR = 26.614221;
var linesPoints = null;
// 百度地图API功能
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(new BMap.Point(106.652024,26.617221), 15); // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.setCurrentCity("贵阳"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
setInterval(goWay,500);
var carMk;
var myIcon = new BMap.Icon("http://sandbox.runjs.cn/uploads/rs/101/wmbvrxnx/kache.png", new BMap.Size(37,25), {imageOffset: new BMap.Size(0, 0)});//卡车
function goWay(){
startLong = endLong;
startLat = endLat;
endLong = getRound(endLong);
endLat = getRound(endLat);
drawIcon(startLong,startLat,endLong,endLat);
//drawRedLine();
}
function getRound(temp){
var i = Math.round(Math.random()*9+1);
if(i%2==0){
return temp + i*0.0001;
}else{
return temp - i*0.0001;
}
}
function getRound1(temp){
var i = Math.round(Math.random()*9+1);
if(i%2==0){
return temp + i*0.0002;
}else{
return temp - i*0.0002;
}
}
function drawGreenLine(startLong,startLat,endLong,endLat){
var polyline = new BMap.Polyline([
new BMap.Point(startLong,startLat),//起始点的经纬度
new BMap.Point(endLong,endLat)//终止点的经纬度
], {strokeColor:"green",//设置颜色
strokeWeight:3, //宽度
strokeOpacity:1});//透明度
map.addOverlay(polyline);
}
function drawRedLine(){
startLongR = endLongR;
startLatR = endLatR;
endLongR = getRound1(endLongR);
endLatR = getRound1(endLatR);
var polyline1 = new BMap.Polyline([
new BMap.Point(startLongR,startLatR),//起始点的经纬度
new BMap.Point(endLongR,endLatR)//终止点的经纬度
], {strokeColor:"red",//设置颜色
strokeWeight:3, //宽度
strokeOpacity:1});//透明度
map.addOverlay(polyline1);
}
function drawIcon(startLong,startLat,endLong,endLat){
if(carMk){
map.removeOverlay(carMk);
}
carMk = new BMap.Marker(
new BMap.Point(endLong,endLat),//起始点的经纬度
{icon:myIcon});
map.addOverlay(carMk);
drawGreenLine(startLong,startLat,endLong,endLat);
}
</script>
相关文章推荐
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
- 百度地图API,根据经纬度实现车辆移动轨迹绘制
- 使用百度地图api实现根据地址查询经纬度
- 根据经纬度坐标值在百度地图上绘制轨迹
- 根据经纬度绘制坐标点相对位置(分别用php和html5实现)
- 基于Google提供play-services:9.8.0的Google 地图开发,适用于Activity、Fragment,并实现添加Marker和根据经纬度显示运动轨迹
- 谷歌地图实现车辆轨迹移动播放(google map api)
- 高德地图实现对应车辆的轨迹回放与轨迹的清除重绘制(浏览器支持: PathSimplifier目前依赖Canvas进行绘制,因此不支持IE9及以下浏览器)
- 使用百度地图api实现根据地址查询经纬度
- 百度地图实现车辆轨迹移动播放(baidu map api)
- 在触屏上实现。。移动轨迹(
- 简单笔画轨迹的绘制,并通过保存轨迹点,实现Path的保存和恢复。
- 根据经纬度求两点间距离实现源码(C#)-非常精确
- 在SAE上开发LBS应用之 根据一点的经纬度实现附近点的查询
- 百度地图API之根据经纬度查询地址信息(Android)
- 连接图片(二),实现根据鼠标方向,平滑移动
- 根据经纬度计算地球上两点之间的距离js实现代码
- 根据经纬度求两点间距离实现源码(java)
- 根据经纬度求地球表面两点间距离的实现--JAVA
- 在SAE上开发LBS应用之 根据一点的经纬度实现附近点的查询