Osmdroid如何用animateTo实现位置标记的动画同步移动?
车载导航位置标记与地图平滑同步移动解决方案
使用OsmBonusPack Marker内置动画方法
OsmBonusPack的Marker类自带平滑移动实现,无需自行编写Handler。直接调用animateTo(GeoPoint target, long duration)方法,即可让标记在指定时长内平滑过渡到目标坐标。同步标记与地图的动画节奏
标记与地图不同步的核心原因是两者动画时长不匹配。只需将标记的animateTo时长与地图控制器的animateTo时长设置为相同值,就能保证移动节奏一致。示例代码:
// 目标位置坐标 GeoPoint target = new GeoPoint(39.9042, 116.4074); // 标记平滑移动到目标,时长1000毫秒 userMarker.animateTo(target, 1000); // 地图同步平滑移动到目标,时长与标记动画一致 mapView.getController().animateTo(target, 1000);沿路线移动的进阶同步方案
如果需要让标记沿规划好的路线移动,可使用Marker的animateAlong(Polyline path, long duration)方法,让标记沿Polyline路径平滑前进。同时开启地图的跟随模式,让地图自动跟踪标记位置,进一步提升同步性:示例代码:
// 假设已通过OSRM获取到路线Polyline Polyline route = ...; // 根据路线长度计算动画总时长(比如按每秒移动10米计算) long duration = (long)(route.getLengthInMeters() / 10 * 1000); // 标记沿路线动画 userMarker.animateAlong(route, duration); // 开启地图跟随模式,自动跟随标记移动 mapView.setFollowLocation(true);
内容的提问来源于stack exchange,提问作者user1618809
相关产品推荐
相关产品推荐

