使用 osmdroid 在 OpenStreet Maps 上制作动画标记

2024-01-22

我正在使用给出的谷歌地图标记动画逻辑here https://gist.github.com/broady/6314689.

我的标记变得动画,但每次之后marker.setPosition(newPosition);我需要打电话mapView.invalidate();这会刷新地图,导致动画非常缓慢。

有什么解决方法吗?


下一个解决方案对我来说工作正常:

import org.osmdroid.api.IGeoPoint;
import org.osmdroid.api.IMapController;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import org.osmdroid.views.Projection;
import org.osmdroid.views.overlay.Marker;

public void animateMarker(final Marker marker, final GeoPoint toPosition) {
    final Handler handler = new Handler();
    final long start = SystemClock.uptimeMillis();
    Projection proj = map.getProjection();
    Point startPoint = proj.toPixels(marker.getPosition(), null);
    final IGeoPoint startGeoPoint = proj.fromPixels(startPoint.x, startPoint.y);
    final long duration = 500;
    final Interpolator interpolator = new LinearInterpolator();
    handler.post(new Runnable() {
        @Override
        public void run() {
            long elapsed = SystemClock.uptimeMillis() - start;
            float t = interpolator.getInterpolation((float) elapsed / duration);
            double lng = t * toPosition.getLongitude() + (1 - t) * startGeoPoint.getLongitude();
            double lat = t * toPosition.getLatitude() + (1 - t) * startGeoPoint.getLatitude();
            marker.setPosition(new GeoPoint(lat, lng));
            if (t < 1.0) {
                handler.postDelayed(this, 15);
            }
            map.postInvalidate();
        }
    });
}

它基于一些人为 GoogleMaps v2 所做的相同实现,但适用于 osmdroid。

我找到 GoogleMaps v2 实现的来源在这里:如何在 android 地图 api V2 中对标记进行动画处理? https://stackoverflow.com/questions/13872803/how-to-animate-marker-in-android-map-api-v2

我在用: osmdroid-android 5.5 和 osmbonuspack 6.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 osmdroid 在 OpenStreet Maps 上制作动画标记 的相关文章

随机推荐

  • 如何使用 Pandas 按月和年对行进行分组和计数?

    我有一个数据集 其中包含姓名 身高 体重和出生日期等个人数据 我会构建一个图表 其中包含特定月份和年份出生的人数 我使用 python pandas 来完成此任务 我的策略是尝试按年和月进行分组并使用计数进行添加 但我得到的最接近的是按年或
  • C++ 多重继承内存寻址问题

    请忽略 include 部分 假设它们已正确完成 另外 这可能是特定于实现的 但 vtable 的概念也是如此 但我只是很好奇 因为它增强了我可视化多重继承 顺便说一下 我使用的是MinGW 4 4 0 初始代码 class A publi
  • Spring boot WAR部署在Tomcat中启动失败

    我试图将 Spring Boot 应用程序打包为战争 但是当我尝试在 tomcat 中部署战争并尝试启动它时 它会抛出一个异常 指出异常启动过滤器 java lang AbstractMethodError 我的Spring boot版本是
  • Objective-C - char 和 unichar 之间的区别?

    我搜索了很多关于差异的信息unichar and char但没有得到任何明确的概念 还告诉我差异char and unichar 使用时char and unichar char是 8 位 表示任意 8 位数字 UTF 8 代码单元或其他字
  • 我如何终止 iphone 中的 api 调用

    我是 iPhone 新手 我遇到了一个新问题 我的应用程序中有一个 api 交互 该 api 需要很长时间才能加载 当我手动终止我的应用程序时 在加载该 api 时我的应用程序关闭 然后我会打开我的应用程序 它会立即关闭 任何人都可以帮助我
  • 单击按钮 Xamarin.forms 将子项添加到父项

    我一直在尝试在 Android 中单击按钮时将标签视图添加到堆栈布局中 但它会抛出空指针异常 以下是我想要实现的目标 任何人都可以请建议如何在 xamarin forms 中实现这一目标 C 中的 Xamarin Forms 代码 Stac
  • 将 postgresql hstore 转换为 php 数组

    是否有一个好的 php 代码片段可以将 postgresql hstore 转换为 php 数组 它将正确地将 hstore 中未加引号的 NULL 转换为 php NULL EG 假设我们有以下 hstore 字符串 k1 gt v1 k
  • Xcode 7 不再有配置文件刷新按钮 - 那么如何将新的设备 ID 添加到配置文件中?

    我刚刚向配置门户添加了一个新设备 以前 下一步是手动更新相关配置文件以添加此新设备 但现在似乎这是由 Xcode 自动处理的 并且不再可能通过配置门户编辑配置文件以包含新设备 门户中不再有编辑按钮 好的 但是最新版本的 Xcode Xcod
  • 对静态函数的未定义引用

    当我在 A 类中创建一个静态函数并且我想从 B 类函数中调用它时 我遇到了一个奇怪的问题 我明白了 对 A funcA int 的未定义引用 这是我的源代码 a cpp include a h void funcA int i std co
  • 如何在flutter中检索sqlite数据库中的图像数据?

    我想在 sqlite 中检索图像数据 我使用下面的代码 var image await ImagePicker pickImage source imageSource List
  • 片段中的 MapActivity

    我有一个FragmentActivity public class parking extends FragmentActivity 它有 3 个选项卡 第二个和第三个是列表 已解决 public class tab2 extends Fr
  • Java中如何从另一个类获取类的特定实例?

    我创建了以下课程main方法 它创建新的实例Application和实例ApplicationModel ApplicationView and ApplicationController对于这个特殊的Application public
  • Shiny 应用程序中的“read_excel”

    我有一个闪亮的应用程序 使用read xlsx包中的函数xlsx 一切正常 但我想改为read excel from readxl 希望它会更快并且能够应对大文件 ui part fileInput inputFile Upload fil
  • 手部检测 Opencv

    我正在尝试使用 OpenCV 和 C 检测手 我能够找到图像中存在人手的手的轮廓 正图像 基本上我找到最大的轮廓并将其视为手部轮廓 假设在给定的图像中不存在手 那么我将采用任何轮廓并将其视为手 所以我开始思考我可以使用 haar 级联来确定
  • 反应式框架/DoubleClick

    我知道有一个简单的方法可以做到这一点 但今晚它打败了我 我想知道两个事件是否在 300 毫秒内发生 例如双击 在 300 毫秒内单击鼠标左键两次 我知道这就是响应式框架的构建目的 但该死的是 如果我能找到一个好的文档 其中包含所有扩展运算符
  • 使用 conda 安装 opencv

    这个问题与 如何通过Conda安装Python OpenCV 不同 因为这个问题是 5 年前提出的 当时所有软件包都有不同的版本 我尝试了该问题的所有答案 但都不起作用 有关详细信息 请参阅问题正文 现在 2019 年 7 月 如何使用 c
  • 用于解析日期/时间字符串(包括时区)的 C++ 库(unix)

    我有多种格式的日期 现在我想在 C 中有一个函数 来自某个库 它可以解析这些日期 时间字符串 并给我一些像 tm 这样的结构 或者将它们转换为某种确定性表示 以便我可以处理日期 时间 我看到的一些格式如下 2008 年 2 月 19 日星期
  • 是否可以用 C++ 编写敏捷的 Pimpl?

    我一直在研究 Pimpl 习语并从中获得了各种好处 我唯一不太感兴趣的是定义函数时的感觉 一旦进入标题 P def 一旦到达 cpp 的顶部 Impl def 一旦进入 cpp Impl Impl 中间 一旦到达 cpp 的下端 P Imp
  • ASP.NET MVC 模型绑定器通过 GET 和 POST 请求以不同的方式解析十进制

    服务器正在托管 Asp net mvc3 应用程序 并且浏览器区域性设置为 da 丹麦语 GET request url get d 1 1 note that the decimal separator is return da 1 1
  • 使用 osmdroid 在 OpenStreet Maps 上制作动画标记

    我正在使用给出的谷歌地图标记动画逻辑here https gist github com broady 6314689 我的标记变得动画 但每次之后marker setPosition newPosition 我需要打电话mapView i