【Android】【Bug】使用OSmdroid绘制轨迹断裂问题

序言

Osmdroid 是一个开源库,专为 Android 平台设计,用于显示地图和处理地理信息。

在OSmdroid里面,绘制轨迹的步骤是

在xml添加MapView

java 复制代码
  <org.osmdroid.views.MapView
      android:id="@+id/map_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />

然后在Activity里面初始化MapView

java 复制代码
/**
 * 地图控件
 */
 @BindView(R.id.map_view)
 MapView map_view;
    
/**
 * 地图控制器
 */
private IMapController mapController;

/**
 * 地图轨迹
 */
private Polyline polyline;
java 复制代码
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);

添加坐标到轨迹里面

java 复制代码
GeoPoint currentPoint = new GeoPoint(latitude, longitude);
polyline.addPoint(currentPoint);
map_view.postInvalidate();

这样就可以实现轨迹的添加,但是,在轨迹变化的时候,转弯的时候出现了这样的情况

轨迹断裂了,这样就不行了,看起来轨迹不连贯的样子。

问题处理

在创建轨迹的时候,添加如下设置

java 复制代码
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);

经过此设置后,问题解决

相关推荐
踢球的打工仔1 天前
PHP面向对象(7)
android·开发语言·php
安卓理事人1 天前
安卓socket
android
安卓理事人1 天前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学1 天前
Android M3U8视频播放器
android·音视频
q***57741 天前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober1 天前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿1 天前
关于ObjectAnimator
android
zhangphil1 天前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我1 天前
从头写一个自己的app
android·前端·flutter
lichong9512 天前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端