1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 安卓修改gps定位模拟百度地图移动

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

时间:2024-08-31 03:50:14

相关推荐

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

背景:

开发一个骑行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);}

可以参考下:/b.php/108487.html

我不记得是参考哪篇文章的代码了,文末我附上我的源码,可以直接用的,增加了一些接口。

GPS坐标列表获取

因为需要模拟连续的坐标变化,所以需要整个导航路径的坐标

获取两个点之间路线经纬度数组——/9QQKp

使用方法:

步骤1:1位置输入你需要查询的地方,快速定位到地图位置

步骤2:选择起点坐标。点击2位置,然后在地图点击起点位置

步骤3:选择终点位置。同步骤2

步骤4:查询路线,就可以复制最下面的坐标数组了

GPS坐标系转换

上述查询路线地图是高德地图,使用的坐标数组是GCJ-02坐标,而百度地图使用的是BD-09坐标,直接使用会位置不对应。

在线坐标批量转换 /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./lbsapi/getpoint/index.html

坑记录

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

百度网页版地图上获取的坐标点,输入到手机版地图上会有偏差,通过记录发现偏差是个固定值

所以获取到的百度网页版本坐标,还需要加上偏差值才能用于手机版本地图上

源码文件

免费下载

/download/JCYAO_/8746

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。