安卓修改gps定位模拟百度地图移动

该文介绍了如何开发一个骑行应用,使用百度导航并模拟骑行过程中的位置移动。通过循环设置模拟位置提供者来实现位置更新。此外,文章还涉及从高德地图获取GPS坐标路径,并将其转换为适用于百度地图的BD-09坐标,以及解决百度地图网页版与手机版坐标不一致的问题。
摘要由CSDN通过智能技术生成

背景:

开发一个骑行app,页面是百度导航,演示需要模拟人骑行,位置不断移动。

位置模拟

核心是这个:

for (String provider : mockProviders) {
                Location mockLocation = null;
                if (location == null) {
                    mockLocation = new Location(provider);
                } else {
                    mockLocation = new Location(location);
                    mockLocation.setProvider(provider);
                }
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                    mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
                }
                locationManager.setTestProviderLocation(provider, mockLocation);
            }

可以参考下:https://m.xp.cn/b.php/108487.html
我不记得是参考哪篇文章的代码了,文末我附上我的源码,可以直接用的,增加了一些接口。

GPS坐标列表获取

因为需要模拟连续的坐标变化,所以需要整个导航路径的坐标
获取两个点之间路线经纬度数组——https://jsrun.net/9QQKp
使用方法:
步骤1:1位置输入你需要查询的地方,快速定位到地图位置
步骤2:选择起点坐标。点击2位置,然后在地图点击起点位置
步骤3:选择终点位置。同步骤2
步骤4:查询路线,就可以复制最下面的坐标数组了
在这里插入图片描述

GPS坐标系转换

上述查询路线地图是高德地图,使用的坐标数组是GCJ-02坐标,而百度地图使用的是BD-09坐标,直接使用会位置不对应。
在线坐标批量转换 https://toolbaba.cn/d/gps
算法转换:

    public static double[] gcj2Bd09(double[] gcj) {
        double x = gcj[0], y = gcj[1];
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        double ret[] = new double[2];
        ret[0] = z * Math.cos(theta) + 0.0065;
        ret[1] = z * Math.sin(theta) + 0.006;
        return ret;
    }

百度地图获取gps坐标

https://api.map.baidu.com/lbsapi/getpoint/index.html

坑记录

1、百度地图网页版的坐标和手机版不对应

百度网页版地图上获取的坐标点,输入到手机版地图上会有偏差,通过记录发现偏差是个固定值
在这里插入图片描述
所以获取到的百度网页版本坐标,还需要加上偏差值才能用于手机版本地图上

源码文件

免费下载
https://download.csdn.net/download/JCYAO_/87420186

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值