mobile CCTV,mobile surveillance,police body worn cameras

标题: Android MCU SDK 位置纠偏问题 [打印本页]

author: LJJ    time: 2019-10-14 16:16
标题: Android MCU SDK 位置纠偏问题
1.您好根据您最新的给的纠偏代码。实际运行中还是会出现偏移的情况。请问你们最新的SDK 和老版本的SDK 在GPS数据传输这块没有做过变动吧。
纠偏代码如下
  1.   BDLocation bdLocation = new BDLocation();
  2.                 bdLocation.setLatitude(entityEntry.getValue().getGpsData().iLatitude / 10000000.0);
  3.                 bdLocation.setLongitude(entityEntry.getValue().getGpsData().iLongitude / 10000000.0);
  4.                 BDLocation location = GlobalTool.WGS84_to_GCJ02(bdLocation);
  5.                 double[] bd09Arr = GlobalTool.GCJ02_to_BD_09(location.getLongitude(), location.getLatitude());
  6.                 LatLng point = new LatLng(bd09Arr[0], bd09Arr[1]);
copycode






author: besovideo    time: 2019-10-14 16:24
你们的MCP SDK的日期是哪个?
author: xuwei    time: 2019-10-14 16:29
纠偏的代码改动总共涉及到四个文件,都替换了么
author: xuwei    time: 2019-10-14 16:29
xuwei post on2019-10-14 16:29
纠偏的代码改动总共涉及到四个文件,都替换了么

把替换后的改动的地方diff下都贴出来看下
author: LJJ    time: 2019-10-14 16:34
SDK的版本号

android:versionCode="112"
android:versionName="20181228_112"
author: LJJ    time: 2019-10-14 16:38

1.坐标接受
  1. public class GPSDataControl implements Process {
  2.         private Context context;

  3.         public GPSDataControl(Context context) {
  4.                 this.context = context;
  5.         }

  6.         @Override
  7.         public boolean process(JNIMessage message) {
  8.                 String method = message.getStrParam(JNIMessage.Key.JNIMESSAGE_KEY_S_ID
  9.                                 .getName());
  10.                 if (method.equals("GPSDATA")) {
  11.                         int token = message.getIntParam(
  12.                                         JNIMessage.Key.JNIMESSAGE_KEY_I_TOKEN.getName(), -1);
  13.                         String s = message
  14.                                         .getStrParam(JNIMessage.Key.JNIMESSAGE_KEY_S_RESULT
  15.                                                         .getName());
  16.                         String func = message
  17.                                         .getStrParam(JNIMessage.Key.JNIMESSAGE_KEY_S_FUNCTION
  18.                                                         .getName());

  19.                         EventBus.getDefault().post(        new GroupLocationEntity(GsonClient.getInstance().fromJson(s, BVCU_PUCFG_GPSData.class),func));



  20.                 }
  21.                 return false;
  22.         }
  23. }
copycode

2.坐标接受
  1.     private HashMap<String, GroupLocationEntity> userInfo;
  2.    
  3.     @Subscribe(threadMode = ThreadMode.MAIN)
  4.     public void onEvent(GroupLocationEntity groupLocationEntity) {


  5.         if (!groupLocationEntity.getUserId().contains(ProcessControl.getInstance().getApp().getServerParam().szClientID.split("_")[1])) {
  6.             userInfo.put(groupLocationEntity.getUserId(), groupLocationEntity);
  7.         }

  8.     }
copycode

3.坐标纠偏
  1. //刷新请求数据
  2.     private class RsfushRunable implements Runnable {

  3.         @Override
  4.         public void run() {
  5.             for (Map.Entry<String, GroupLocationEntity> entityEntry : userInfo.entrySet()) {
  6.                 BDLocation bdLocation = new BDLocation();
  7.                 bdLocation.setLatitude(entityEntry.getValue().getGpsData().iLatitude / 10000000.0);
  8.                 bdLocation.setLongitude(entityEntry.getValue().getGpsData().iLongitude / 10000000.0);
  9.                 BDLocation location = GlobalTool.WGS84_to_GCJ02(bdLocation);
  10.                 double[] bd09Arr = GlobalTool.GCJ02_to_BD_09(location.getLongitude(), location.getLatitude());
  11.                 LatLng point = new LatLng(bd09Arr[0], bd09Arr[1]);
  12.                 String name = checkUserInfo(entityEntry.getKey());
  13.                 Bundle bundle = new Bundle();
  14.                 bundle.putString("id", entityEntry.getKey());
  15.                 bundle.putString("name", name);
  16.                 OverlayOptions option = new MarkerOptions()
  17.                         .position(point) //必传参数
  18.                         .icon(greenBitmap) //必传参数
  19.                         .draggable(true)
  20.                         .extraInfo(bundle)
  21.                         .flat(true);

  22.                 OverlayOptions mTextOptions = new TextOptions()
  23.                         .text(name) //文字内容
  24.                         .bgColor(0xFFFFFFFF) //背景色
  25.                         .fontSize(32) //字号
  26.                         .fontColor(0xFF68C270) //文字颜色
  27.                         .rotate(0) //旋转角度

  28.                         .position(point);
  29.                 optionList.add(option);
  30.                 optionList.add(mTextOptions);
  31.             }
  32.             handler.sendEmptyMessage(0);

  33.         }
  34.     }


copycode

author: LJJ    time: 2019-10-14 16:39
xuwei post on2019-10-14 16:29
把替换后的改动的地方diff下都贴出来看下

工具类已经替换为最新的坐标处理
author: xuwei    time: 2019-10-14 16:48
LJJ post on2019-10-14 16:39
工具类已经替换为最新的坐标处理

用最新MCP SDK后再更新修复问题的文件
author: LJJ    time: 2019-10-14 17:10
您好!我这边打印GPS数据
2019-10-14 17:09:02.031 24513-24513/com.inchatcu.mcu D/com.bdmap.LocationAdapter: run:-->3 121.45932498604259==31.201431038172114
2019-10-14 17:09:02.047 24513-24513/com.inchatcu.mcu D/GroupMapActivity: run:-->1  121.4638891,31.1995115

run3 是传入的本机的数据
run1 是获取的本机的数据
传输过程中就出现了偏移
author: LJJ    time: 2019-10-14 17:15
LJJ post on2019-10-14 17:10
您好!我这边打印GPS数据
2019-10-14 17:09:02.031 24513-24513/com.inchatcu.mcu D/com.bdmap.LocationA ...

这里是加了什么纠偏算法进去的  因为现在开发时间比较急,替换SDK 工程量比较大。所以能针对这里做优化么
author: xuwei    time: 2019-10-14 17:18
LJJ post on2019-10-14 17:15
这里是加了什么纠偏算法进去的  因为现在开发时间比较急,替换SDK 工程量比较大。所以能针对这里做优化么

不是纠偏,是GPS坐标系转换,平台用的是WGS84,百度地图上需要是BD09,所以要将做转换,转换的方法已经提供了WGS84到BD09的方法              
BDLocation location = GlobalTool.WGS84_to_GCJ02(bdLocation);
double[] bd09Arr = GlobalTool.GCJ02_to_BD_09(location.getLongitude(), location.getLatitude());
author: xuwei    time: 2019-10-14 17:21
xuwei post on2019-10-14 17:18
不是纠偏,是GPS坐标系转换,平台用的是WGS84,百度地图上需要是BD09,所以要将做转换,转换的方法已经提 ...

另外,在BVMAP.java中的改动一定要同步过去
author: LJJ    time: 2019-10-14 17:22
xuwei post on2019-10-14 17:18
不是纠偏,是GPS坐标系转换,平台用的是WGS84,百度地图上需要是BD09,所以要将做转换,转换的方法已经提 ...

用的就是这个方法,,,,我打印日志发现传上去的数据 和传回来的数据 有偏移
run:-->3  121.45932599316303==31.201423064745583
run:-->1  121.4638901,31.1995035
run:-->2   121.47493101662553,31.20360121541407

run3是传上去的本机GPS  
run1 是获取的本机数据 未处理
run2是处理后的数据
author: xuwei    time: 2019-10-14 17:23
LJJ post on2019-10-14 17:22
用的就是这个方法,,,,我打印日志发现传上去的数据 和传回来的数据 有偏移
run:-->3  121.459325993 ...

BVMAP.java中的改动一定要同步过去
author: LJJ    time: 2019-10-14 17:49
xuwei post on2019-10-14 17:23
BVMAP.java中的改动一定要同步过去

发送数据之前是有一步 百度转84的过程吧    GlobalTool.BAIDU_to_WGS84(location);
author: besovideo    time: 2019-10-14 18:05
是的。




欢迎光临 mobile CCTV,mobile surveillance,police body worn cameras (http://bbs.besovideo.com:8067/) Powered by Discuz! X3.2