【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);

经过此设置后,问题解决

相关推荐
帅次11 小时前
Android 高级工程师面试:Flutter Widget 体系 近1年高频追问 20 题
android·flutter·面试·element·widget·setstate·renderobject
帅次11 小时前
Android 高级工程师面试:Jetpack 核心 近1年高频追问 20 题
android·面试·协程·jetpack·stateflow·lifecycle
爱笑鱼12 小时前
Handler(四):Handler 卡顿怎么定位?从 Slow delivery 到 Slow dispatch
android
九皇叔叔12 小时前
RHEL9.8 配置本地镜像仓库
android·java·缓存
私人珍藏库13 小时前
[Android] 聊天记录微备份 -聊天记录备份+本地数据备份
android·人工智能·app·软件·多功能
私人珍藏库14 小时前
[Android] PocketPal -本地离线AI助手+大模型部署神器
android·人工智能·app·软件·多功能
listening77714 小时前
HarmonyOS 6.1 跨端实战:用ArkUI-X把电商App同时跑在Android/iOS上
android·ios·harmonyos
爱笑鱼14 小时前
Handler(三):主线程、HandlerThread、Binder 线程到底怎么区分?
android
w1395485642214 小时前
鸿蒙实战:报告与雷达图 ReportDao
android·华为·harmonyos·鸿蒙系统
爱笑鱼15 小时前
Handler(二):MessageQueue 为什么不是普通队列?
android