关闭

Android 使用百度LBS SDK(六)轨迹回放

标签: Android百度地图SDK轨迹轨迹回放
5768人阅读 评论(5) 收藏 举报
分类:

前篇:

Android使用百度LBS SDK     

(内容:百度地图API基本功能)


Android使用百度LBS SDK(二)

(内容:计算轨迹起始点和终点的直线距离和行驶距离、去掉MapView的缩放空间和百度Logo)


Android使用百度LBS SDK(三)点击地图POI导航 

(内容:击Poi或者地图上任意位置开始导航)


Android使用百度LBS SDK(四) 

(内容:设置导航路线规划策略、搜索框添加一键清除按钮、避免多次进入导航实例)


Android使用百度LBS SDK(五) 

(内容:卫星图、定位模式:普通跟随罗盘、指南针位置、SD卡导入离线地图、在线更新离线地图)


------------------------------------------------------------------------------------------------------------------------------------------

前面实现了轨迹绘制功能,后面添加了轨迹回放功能。

可还原轨迹速度,显示轨迹时间进度,暂停播放轨迹,加速播放。

效果:



------ 红虚线:起始点和终点连接直线

------ 绿虚线:轨迹趋势线

—— 蓝实线:实时绘制的轨迹


  支持x1,x5,x10倍速播放轨迹。


暂停,继续,重复播放。

------------------------------------------------------------------------------------------------------------------------------------------

代码实现:

主要状态:

        /** 播放倍数 */
	private TextView textPlaySpeed;

	/** 播放状态控制图标 */
	private ImageView imagePlayState;

	/** 播放状态:暂停、播放 */
	private boolean isRoutePlaying = true;

	/** 播放时间 */
	private TextView textPlayTime;

	/** 是否播放完毕 */
	private boolean isRouteFinished = false;

	public double mRouteLatitude = 0.0;
	public double mRouteLongitude = 0.0;

	/** 轨迹文件夹路径 */
	private final String ROUTE_PATH = Constant.RouteTrack.PATH;

	/** 当前轨迹的路径 */
	private String filePath = "";

绘制轨迹线程:

		                        nowIndex = 1;
					for (int i = 0; i < points.size(); i++) {
						if (isActivityShowing) {
							if (isRoutePlaying) {
								Message messageFollow = new Message();
								messageFollow.what = 1;
								drawRouteHandler.sendMessage(messageFollow);

								try {
									Thread.sleep(1000 / MyApplication.routePlaySpeed);
								} catch (InterruptedException e) {
									e.printStackTrace();
								}
							} else {
								// 暂停
								do {
									try {
										Thread.sleep(500);
									} catch (InterruptedException e) {
										e.printStackTrace();
									}
								} while (!isRoutePlaying);

							}
						} else {
							MyLog.v("[Loop]Return in case activity is onDestory.");
							return;
						}
					}

绘制轨迹趋势底图,起点终点虚线:

						// 绘制轨迹底图
						PolylineOptions polylineOptionBg = new PolylineOptions();
						polylineOptionBg.width(10); // 折线线宽, 默认为 5, 单位:像素
						polylineOptionBg.dottedLine(true); // 折线是否虚线
						polylineOptionBg.color(0xAA009966); // 折线颜色
						polylineOptionBg.points(points); // 折线坐标点列表:[2,10000],且不能包含null
						polylineOptionBg.keepScale(true); // 纹理宽、高是否保持原比例渲染

						OverlayOptions ooPolyline = polylineOptionBg;
						mBaiduMap.addOverlay(ooPolyline);

						// 绘制起点终点直线
						PolylineOptions polylineOptionDirec = new PolylineOptions();
						polylineOptionDirec.width(10); // 折线线宽, 默认为 5, 单位:像素
						polylineOptionDirec.dottedLine(true); // 折线是否虚线
						polylineOptionDirec.color(0xAAFF0000); // 折线颜色
						List<LatLng> pointStartEnd = new ArrayList<LatLng>(2);
						pointStartEnd.add(points.get(0));
						pointStartEnd.add(points.get(points.size() - 1));

						polylineOptionDirec.points(pointStartEnd); // 折线坐标点列表:[2,10000],且不能包含null
						polylineOptionDirec.keepScale(true); // 纹理宽、高是否保持原比例渲染

						OverlayOptions ooPolylineDirec = polylineOptionDirec;
						mBaiduMap.addOverlay(ooPolylineDirec);


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:633070次
    • 积分:6817
    • 等级:
    • 排名:第3384名
    • 原创:160篇
    • 转载:0篇
    • 译文:0篇
    • 评论:151条
    博客专栏
    时间过得好快。
    Alex Zhou