java - 根据mapbox map android上的用户导航旋转标记(箭头)

标签 java android mapbox-android mapbox-marker

我正在开发一个应用程序,我必须根据用户导航来旋转箭头。
我正在使用最新的 Mapbox SDK。
我尝试过使用障碍(使用纬度和经度计算)但无法成功。
我不知道如何实现它。
它(箭头标记)应该在预定义的多边形路径上导航。
enter image description here

最佳答案

我使用以下方法成功计算方位并根据用户导航旋转箭头:

float bearingBetweenLocations(LatLng latLng1, LatLng latLng2) {
        double PI = 3.14159;
        double lat1 = latLng1.getLatitude() * PI / 180;
        double long1 = latLng1.getLongitude() * PI / 180;
        double lat2 = latLng2.getLatitude() * PI / 180;
        double long2 = latLng2.getLongitude() * PI / 180;
        double dLon = (long2 - long1);
        double y = Math.sin(dLon) * Math.cos(lat2);
        double x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
                * Math.cos(lat2) * Math.cos(dLon);
        double brng = Math.atan2(y, x);
        brng = Math.toDegrees(brng);
        brng = (brng + 360) % 360;

        return (float) brng;
    }
注意:箭头的头部应指向向上的方向,如下图所示。
如果不是,则必须根据箭头方向设置方位 +/-。
enter image description here

关于java - 根据mapbox map android上的用户导航旋转标记(箭头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66047330/

相关文章:

android - 如何正确清除 singleTop Activity 中的 Intent 数据?

android - 为什么 mapbox-android sdk 没有从 build.gradle 解析?

android - Mapbox 的 setOnMapClickListener 已弃用方法

java - java中如何动态显示流程图?

java - 我该如何处理/tmp/jar_cache#######.tmp?

java - Jackson 序列化枚举和非传统 setter / getter

java - 将文件转换为字节数组时出错。 java.ioFileNotFoundException

android - 如何以编程方式调用 ViewPager 的下一页?

android - 如何从 Android 中的经纬度列表创建 Mapbox 热点和热图?

java - 从 'stream()' 或 'parallelStream()' 中捕获异常会丢失正确的值