【Android】【Bug】使用OSmdroid绘制轨迹断裂问题
序言
Osmdroid 是一个开源库,专为 Android 平台设计,用于显示地图和处理地理信息。
在OSmdroid里面,绘制轨迹的步骤是
在xml添加MapView
<org.osmdroid.views.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然后在Activity里面初始化MapView
/**
* 地图控件
*/
@BindView(R.id.map_view)
MapView map_view;
/**
* 地图控制器
*/
private IMapController mapController;
/**
* 地图轨迹
*/
private Polyline polyline;
map_view.setMultiTouchControls(false);//不允许多点触摸
map_view.setBuiltInZoomControls(false);// 隐藏默认的缩放控件
mapController = map_view.getController();
mapController.setZoom(25);
polyline= new Polyline();
polyline.setColor(getResources().getColor(R.color.h_orange));
polyline.setWidth(30f);
map_view.getOverlayManager().add(polyline);
添加坐标到轨迹里面
GeoPoint currentPoint = new GeoPoint(latitude, longitude);
polyline.addPoint(currentPoint);
map_view.postInvalidate();
这样就可以实现轨迹的添加,但是,在轨迹变化的时候,转弯的时候出现了这样的情况
轨迹断裂了,这样就不行了,看起来轨迹不连贯的样子。
问题处理
在创建轨迹的时候,添加如下设置
polyline= new Polyline();
polyline.setColor(getResources().getColor(R.color.h_orange));
polyline.setWidth(30f);
Paint paint = polyline.getPaint();
paint.setStrokeJoin(Paint.Join.ROUND);// 设置连接处为圆滑
paint.setStrokeCap(Paint.Cap.ROUND); // 设置端点为圆滑(这个可不加)
map_view.getOverlayManager().add(polyline);
经过此设置后,问题解决