团队冲刺第四天

1、今天主要实现的功能是解决了百度地图定位的运动轨迹记录。以及动态显示运动轨迹和静态显示运动轨迹两种方式。遇到的主要的问题是在在刚开始的时候gps定位不准确造成的运动轨迹的偏差计算。和错误显示。最后进行了错误的解决。实现了在刚开始的时候获取多个gps定位数据选取最为准确的一个进行显示。最后成功了。明天准备的工作是。准备学习并实践。运动距离的计算和速度的获取。今天的重要的代码具体如下所示以及运行结果:

          
// 定位初始化
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);//只用gps定位,需要在室外定位。
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
mLocClient.setLocOption(option);


if (location.getLocType() == BDLocation.TypeGpsLocation) { info.setText("GPS信号弱,请稍后..."); if (isFirstLoc) {//首次定位 //第一个点很重要,决定了轨迹的效果,gps刚开始返回的一些点精度不高,尽量选一个精度相对较高的起始点 LatLng ll = null; ll = getMostAccuracyLocation(location); if(ll == null){ return; } isFirstLoc = false; points.add(ll);//加入集合 last = ll; locateAndZoom(location, ll); MarkerOptions oStart = new MarkerOptions(); oStart.position(points.get(0)) oStart.icon(startBD); mBaiduMap.addOverlay(oStart); progressBarRl.setVisibility(View.GONE); return;//画轨迹最少得2个点,首地定位到这里就可以返回了 } //从第二个点开始 LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); if (DistanceUtil.getDistance(last, ll) < 5) { return; } points.add(ll); last = ll; //显示当前定位点,缩放地图 locateAndZoom(location, ll); //清除上一次轨迹,避免重叠绘画 mMapView.getMap().clear(); //起始点图层也会被清除,重新绘画 MarkerOptions oStart = new MarkerOptions(); oStart.position(points.get(0)); oStart.icon(startBD); mBaiduMap.addOverlay(oStart); OverlayOptions ooPolyline = new PolylineOptions().width(13).color(0xAAFF0000).points(points); mPolyline = (Polyline) mBaiduMap.addOverlay(ooPolyline); }

原文地址:https://www.cnblogs.com/dazhi151/p/12728915.html