2019独角兽企业重金招聘Python工程师标准>>>

准备工作就不多说了,在之前的实时定位中已经提过,这里就主要说下思路

查询历史轨迹, 主要是要有时间段,并且这个时间段必须在24小时之内,而且传入的时间参数居然是int的,为毛百度就不能用long呢,坑爹的,将long转化为int有时候会报错,就不多说,截取吧...

//选择交通方式if (!radiobutton_drive.isChecked() && !radiobutton_walk.isChecked() && !radiobutton_ride.isChecked()) {MyToastUtils.show(MainActivity.this, "请选择交通方式");return;}if (radiobutton_drive.isChecked()) {Log.i(TAG, "选中方式"+radiobutton_drive.getText());transport_modes = "transport_mode=1";}else if (radiobutton_ride.isChecked()) {Log.i(TAG, "选中方式"+radiobutton_ride.getText());transport_modes = "transport_mode=2";}else if (radiobutton_walk.isChecked()) {Log.i(TAG, "选中方式"+radiobutton_walk.getText());transport_modes = "transport_mode=3";}StringBuffer startBuffer = new StringBuffer();startBuffer.append(input_starttime_year).append("-").append(input_starttime_month).append("-").append(input_starttime_day).append(" ").append(input_starttime_hour);StringBuffer endBuffer = new StringBuffer();endBuffer.append(input_endtime_year).append("-").append(input_endtime_month).append("-").append(input_endtime_day).append(" ").append(input_endtime_hour);startTimeStamp = DateUtils.getTimeToStamp(startBuffer.toString());endTimeStamp = DateUtils.getTimeToStamp(endBuffer.toString());Log.i(TAG, startTimeStamp+"---"+endTimeStamp);if (endTimeStamp >= startTimeStamp) {checkHistoryLineHandler.sendEmptyMessage(222);

handler发送完后就,直接查询历史轨迹,也可以查询里程

checkHistoryLineThread = new HandlerThread("checkHistoryLine");checkHistoryLineThread.start();checkHistoryLineHandler = new Handler(checkHistoryLineThread.getLooper()){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (null != msg) {if (msg.what == 222) {//查询的dialog取消掉mHandler.obtainMessage(DIALOG_DISMISS).sendToTarget();//查历史轨迹queryHistoryLine();//查里程queryDistances(startTimeStamp,endTimeStamp);}}}};
/*** 查询历史轨迹*/protected void queryHistoryLine() {//轨迹服务IDlong serviceId = mApp.getServiceId();// entity标识列表(多个entityName,以英文逗号"," 分割)String entityName = mApp.getName();// 是否返回精简结果 (0 : 返回全部结果,1 : 返回精简结果)int simpleReturn = 1;/* 1 返回纠偏轨迹,为0则返回原始轨迹      * 当设置为 1 时 , 默认仅进行去噪和抽稀处理,并不作绑路处理* */int isProcessed = 1;/* 纠偏选项  *  ①need_denoise:去噪,默认为1②need_vacuate:抽稀,默认为1③need_mapmatch:绑路,之前未开通绑路的service,默认值为0;之前已开通绑路的service,默认值为1。 transport_mode:交通方式, 1: 驾车,2: 骑行,3: 步行。默认为1:驾车。设置该参数后,系统将根据所选的交通方式,进行适应该方式的去噪、抽稀、绑路处理(注:目前仅影响绑路策略)*/String processOption = "need_denoise=1,need_vacuate=1,need_mapmatch=1,"+transport_modes;//开始查询的时间点int startTimes = startTimeStamp;//结束的时间点int endTimes = endTimeStamp;//分页大小, 每页有几条记录,默认100 ,最大5000int pageSize = 4000;//分页索引, 代表返回第几页, 默认是1 int pageIndex = 1; traceClient.queryHistoryTrack(serviceId , entityName, simpleReturn, isProcessed,   processOption, startTimes, endTimes, pageSize, pageIndex, myHistoryTrace);}
/*** 查询里程*/public void queryDistances(int startTime,int endTime){//轨迹服务IDlong serviceId = mApp.getServiceId();// entity标识列表(多个entityName,以英文逗号"," 分割)String entityName = mApp.getName();/* 1 返回纠偏轨迹,为0则返回原始轨迹      * 当设置为 1 时 , 默认仅进行去噪和抽稀处理,并不作绑路处理* */int isProcessed = 1;/* 纠偏选项  *  ①need_denoise:去噪,默认为1②need_vacuate:抽稀,默认为1③need_mapmatch:绑路,之前未开通绑路的service,默认值为0;之前已开通绑路的service,默认值为1。 transport_mode:交通方式, 1: 驾车,2: 骑行,3: 步行。默认为1:驾车。设置该参数后,系统将根据所选的交通方式,进行适应该方式的去噪、抽稀、绑路处理(注:目前仅影响绑路策略)*/
//        String processOption = "need_denoise=1,need_vacuate=1,need_mapmatch=1,"+transport_modes;String processOption = "need_denoise=1,need_vacuate=1,need_mapmatch=1";/***  里程补充 ,当轨迹中断5分钟以上,会被认为是一段中断轨迹 *  driving:使用最短驾车路线距离补充 *  riding:使用最短骑行路线距离补充 *  walking:使用最短步行路线距离补充 *  straight:使用直线距离补充 *  no_supplement:不补充,中断两点间距离不记入里程。 */String supplementMode = null;if (radiobutton_drive.isChecked()) {supplementMode = "driving";}else if (radiobutton_ride.isChecked()) {supplementMode = "riding";}else if (radiobutton_walk.isChecked()) {supplementMode = "walking";}else if (isLoca) {supplementMode = "no_supplement";}traceClient.queryDistance(serviceId, entityName, isProcessed,processOption, supplementMode, startTime,endTime, myHistoryTrace);}
    private void initHistoryTrcak() {myHistoryTrace = new OnTrackListener(){public void onQueryHistoryTrackCallback(String message) {//返回的是json的字符串Log.i(TAG, message+"-!!!------哈");try {JSONObject obje = new JSONObject(message);Log.i(TAG, obje+"历史轨迹的");if (null != obje) {if ((Integer)obje.get("status") == 0) {/** 这里start_point和end_point这两个字段返回的是对象{} ,所以用getJSONObject* obj.getJSONObject("start_point")* 这里point这个字段返回的是数组[] ,所以用getJSONArray* obj.getJSONArray("points")*///这个是返回的轨迹点的集合, 每个点 有经纬度JSONArray array = obje.getJSONArray("points");Log.i(TAG, array.length()+"----array");if (null != array || array.length() == 0) {LatLng ll = null;for (int i = 0; i < array.length(); i++) {JSONArray array2 = array.getJSONArray(i);ll = new LatLng(array2.getDouble(1),array2.getDouble(0));pointList.add(ll);//画线   mHandler.obtainMessage(DRAW_HISTORY_LINE,ll).sendToTarget();}}else{//没有轨迹mHandler.obtainMessage(TRACE_NOT).sendToTarget();}//这是开始位置JSONObject startLocal = obje.getJSONObject("start_point");double startLocal_longitude = Double.parseDouble(startLocal.get("longitude").toString());double startLocal_latitude = Double.parseDouble(startLocal.get("latitude").toString());//结束位置JSONObject endLocal = obje.getJSONObject("end_point");double endLocal_longitude = Double.parseDouble(endLocal.get("longitude").toString());double endLocal_latitude = Double.parseDouble(endLocal.get("latitude").toString());if (startLocal_longitude == 0.0 ||startLocal_latitude == 0.0||endLocal_longitude == 0.0 || endLocal_latitude == 0.0) {Log.i(TAG, "没有轨迹点");mHandler.obtainMessage(TRACE_NOT).sendToTarget();}else{LatLng startlocal_ll = new LatLng(startLocal_latitude,startLocal_longitude);mHandler.obtainMessage(DRAW_HISTORY_LINE_START, startlocal_ll).sendToTarget();LatLng endlocal_ll = new LatLng(endLocal_latitude,endLocal_longitude);mHandler.obtainMessage(DRAW_HISTORY_LINE_END, endlocal_ll).sendToTarget();}}else if ((Integer)obje.get("status") == 2) { //开始结束时间间隔不能超过24小时mHandler.obtainMessage(ERROR_MESSAGE, obje.get("message")).sendToTarget();;}}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();Log.i(TAG, "解析失败----");}mHandler.obtainMessage(PROGRESS_DIALOG_DISMISS).sendToTarget();}//返回路程的监听回调@Overridepublic void onQueryDistanceCallback(String msg) {super.onQueryDistanceCallback(msg);Log.i(TAG, "查询里程"+msg);try {JSONObject o = new JSONObject(msg);double s = Double.parseDouble(o.get("distance").toString());Log.i(TAG, "里程msg"+o+"距离"+s);if (isLoca) { //如果实时定位开着, 这时候 要把每次获取出的距离都累加起来totalDistance += s;totalDistance = MathUtils.convert(totalDistance);Log.i(TAG, totalDistance+"--实时定位的距离--"+s);mHandler.obtainMessage(SHOW_DISTANCE, totalDistance).sendToTarget();}else{mHandler.obtainMessage(SHOW_HISTORY_DISTANCE, MathUtils.convert(s)).sendToTarget();}} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onRequestFailedCallback(String arg0) {// TODO Auto-generated method stubLog.i(TAG, arg0+"-!!!------噶");};};}
case DRAW_HISTORY_LINE: //历史轨迹LatLng ll = (LatLng) msg.obj;drawLineOrTimeLoca(ll,true);break;
case DRAW_HISTORY_LINE_START:LatLng loca_start = (LatLng) msg.obj;setMarker(loca_start, "start");break;
case DRAW_HISTORY_LINE_END:LatLng loca_end = (LatLng) msg.obj;setMarker(loca_end, "end");break;
/*** 绘制历史轨迹路线或者 实时定位* 传true 表示需要绘制历史轨迹* 传false 表示不需要绘制历史轨迹*/protected void drawLineOrTimeLoca(LatLng point,boolean lineOrLoca) {if (lineOrLoca) {if (pointList.size() >= 2 && pointList.size() <= 10000) {// 添加路线(轨迹)polyline = new PolylineOptions().width(10).color(Color.RED).points(pointList);}else{pointList = pointList.subList(10000, pointList.size());polyline = new PolylineOptions().width(10).color(Color.RED).points(pointList);}}setMarker(point, "routeline");}

设置覆盖物setMarker的方法 ,在前面的实时定位中已经贴出来了,需要的可以到那里去看

转载于:https://my.oschina.net/fbf8866/blog/853349

百度地图- - - 鹰眼轨迹- - - 历史轨迹和里程查询相关推荐

  1. js百度地图小车html,H5页面引用百度地图绘制车辆历史轨迹

    //打开百度地图 function openbMap(){ //模拟数据 var cars = {"car_5":[{"id":1,"order_id ...

  2. 百度地图鹰眼轨迹服务

    这里写目录标题 百度地图鹰眼轨迹服务 鹰眼轨迹服务概述: 鹰眼轨迹服务基本概念: 权限与配额: 创建鹰眼服务: 获取服务id: 终端管理: 添加entity: 添加entity自定义字段: 更新ent ...

  3. 使用高德地图API实现历史轨迹查询

        欢迎大家关注我的公众号,有问题可以及时和我交流. 使用高德地图API完成历史轨迹查询 创作背景 相关技术 设计思路 实现难点 编码实现 实现效果 创作背景 因为对历史轨迹查询比较好奇,所以使用 ...

  4. 【百度地图】路书轨迹显示

    [百度地图]路书轨迹显示 通过后端返回的坐标点列表,然后在地图上展示出轨迹,并且显示标点和显示窗口文案.效果如下 引入百度地图,因为百度地图的轨迹(路书)模式只能是3.0才可以使用,所以注意自己引入的 ...

  5. 【百度地图API】建立全国银行位置查询系统(五)——如何更改百度地图的信息窗口内容?...

    [百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 原文: [百度地图API]建立全国银行位置查询系统(五)--如何更改百度地图的信息窗口内容? 摘要: 酷讯.搜房. ...

  6. 百度地图-鹰眼轨迹服务

    1.服务概述: 官网地址:鹰眼轨迹服务 | 百度地图API SDK (里面有相关功能的介绍) 2.鹰眼轨迹服务基本概念: 3.权限与配额: 4.创建鹰眼服务: 5.终端管理: 添加Entity: // ...

  7. 百度地图开发之——百度地图鹰眼轨迹管理台DEMO-v3部署到服务器上

    百度地图开发官方下载口:https://github.com/baidu-openmap-trace/web-demo-v3 第一:部署准备 搭建NPM和FIS3的环境 1.安装node.js:htt ...

  8. 百度地图鹰眼轨迹---乱码问题

    沉寂了这么久,一直没能搞出新的东西,终于,今天,做出来了,特此来一发! 这些天要搞一个竞赛,在利用百度地图实现自己的功能时,出现了N个幺蛾子,现在回想起来,自己蠢得可以.现在说重点: 百度鹰眼,这是个 ...

  9. 前端捕捉轨迹_web端百度地图API实现实时轨迹动态展现

    最近在工作中遇到了一个百度地图api中的难题,恐怕有的程序员可能也遇到过.就是实时定位并显示轨迹,网上大部分都是通过创建polyline对象贴到地图上.当然,百度地图的画线就是这样实现的,但是好多人会 ...

最新文章

  1. 连表/子查询/计算的sql
  2. 使用深度学习和树搜索进行从零开始的既快又慢的学习
  3. 《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一导读
  4. [ATF]-smc指令详解
  5. 初学者不建议月python吗_9.python入门
  6. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1354:括弧匹配检验
  7. 【Jmeter】压力测试工具 Jmeter 使用
  8. HDU5129 - Yong Zheng's Death
  9. api 数据gzip压缩_如何使用GZip和Jersey压缩Java REST API中的响应
  10. 前端学习(3184):ant-design的button介绍按钮属性
  11. linux修改非root用户密码永不过期
  12. Linux源码安装软件
  13. 数组实例的find() 和 findIndex()方法
  14. 杭电1229 还是A+B
  15. 【AC军团周报(第一周)第一篇】线段树从入门到入土【1】
  16. python 调用js_python调用JS方法
  17. php 去除 css 格式,PHP清除html格式,去除html、css、js格式
  18. 如何删除Word 2010中的“向下箭头”
  19. win10系统暴雪战网连不上服务器,win10系统暴雪战网无法登陆的解决方法
  20. Linux内核中的延时函数详解

热门文章

  1. ios 状态栏设置
  2. 面向对象思想在UnityUI控制背景音乐音效大小开关中的运用
  3. 怎么将PDF文件转成PNG格式
  4. 电影《叶问4》终结篇终于来袭,这次甄子丹与美军特种部队对打!
  5. 微信之父张小龙:超1亿人朋友圈设置了三天可见
  6. xlwings删除数据_xlwings最全操作;10秒搞定Xlwings全套操作
  7. 32wei客户端 oracle10g_【oracle 10g客户端下载】oracle 10g数据库客户端32位/64位下载 官方版-七喜软件园...
  8. CAD有生僻字如何打出来、如何提交软件相关问题或建议?
  9. Fast-MVSNet解读
  10. 用php输出一百以内的素数,php输出1000以内质数(素数)示例