更新记录
1.0.6(2024-04-30)
1、兼容Android 14
1.0.5(2023-09-05)
1、解决同时勾选Geolocation、Maps模块打包失败问题。
1.0.4(2023-09-04)
1、解决插件与Maps模块内置SDK冲突问题。
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:11 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用说明
插件声明
- 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还;
- 如有使用上的疑问、bug或者需求建议,可以QQ群(345533496)反馈;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。
Android保活设置
- 开启定位、后台定位权限,通知管理允许通知,允许自启动;
- 耗电保护允许后台运行;
- 电池设置中关闭智能耗电保护、省电模式、应用速冻等。
注意事项:
- 本插件使用需要勾选Geolocation模块;
- iOS开启后台定位即开启进程保活,需要在manifest.json -> App常用其它设置,配置定位的后台运行能力;
- 若要自定义连续定位时间间隔,iOS的连续定位间隔需控制在15s以内,不然会影响后台定位以及进程保活;
- Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。
插件引入
首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module
var aliveModule = uni.requireNativePlugin('LY-DCLocationAlive-LocationAliveModule');
组件Api说明
1 定位
1.1 定位配置项
方法说明:若不需要自定义,此API可以不调用。
特别注意:iOS的连续定位间隔需控制在15s以内,不然会影响后台定位以及进程保活。
aliveModule.initLocationConfig(config)
config 参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
locationTimeout | int | 否 | 指定单次定位超时时间, 默认5s | Android、iOS |
reGeocodeTimeout | int | 否 | 单次定位逆地理超时时间, 默认5s | iOS |
locationInterval | int | 否 | 连续定位时间间隔, 默认10s | Android、iOS |
1.2 单次定位
aliveModule.requestLocationWithReGeocode(withReGeocode, callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
withReGeocode | Boolean | 是 | 是否需要地址信息 | Android、iOS |
callback | function | 否 | 结果回调 | Android、iOS |
callback参数说明
成员名 | 数据类型 | 说明 | 适用 |
---|---|---|---|
code | int | 状态, -1为成功, 具体请参照高德官方SDK | Android、iOS |
errMsg | String | 错误描述 | Android、iOS |
latitude | double | 纬度 | Android、iOS |
longitude | double | 经度 | Android、iOS |
address | Map | 地址信息 | Android、iOS |
address参数说明
成员名 | 数据类型 | 说明 | 适用 |
---|---|---|---|
formattedAddress | String | 格式化地址 | Android、iOS |
country | String | 国家 | Android、iOS |
province | String | 省/直辖市 | Android、iOS |
city | String | 城市 | Android、iOS |
district | String | 区 | Android、iOS |
citycode | String | 城市编码 | Android、iOS |
adcode | String | 区域编码 | Android、iOS |
street | String | 街道名称 | Android、iOS |
number | String | 门牌号 | Android、iOS |
POIName | String | 兴趣点名称 | Android、iOS |
AOIName | String | 所属兴趣点名称 | Android、iOS |
1.3 持续定位
请注意:
1、iOS如果允许后台定位(allowBackground=true),则必须在manifest.json中配置定位的三个权限(没有权限不能后台定位)、以及定位后台运行能力(不配会闪退)。如此App就具备了保活能力。
2、iOS如果不允许后台定位(allowBackground=false),则只需要配置App使用期间的定位权限即可。定位后台运行能力也不需要配置。
3、配置请见插图
aliveModule.startUpdatingLocation(withReGeocode, allowBackground, callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
withReGeocode | Boolean | 是 | 是否需要地址信息 | Android、iOS |
allowBackground | Boolean | 是 | 是否允许后台定位 | Android、iOS |
callback | function | 否 | 结果回调, 参照单次定位 | Android、iOS |
1.4 关闭定位
aliveModule.stopUpdatingLocation();
1.5 保活 - 仅限Android使用
保活会自行开启定位,不需要再调用其他获取定位的Api。
aliveModule.keepAlive(callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 |
---|---|---|---|
callback | function | 否 | 结果回调, 参照单次定位 |
1.6 关闭保活 - 仅限Android使用
aliveModule.nonKeepAlive();
2 坐标系转换
2.1 百度09坐标系 --> 国测局坐标系
let coord = aliveModule.bd09ToGcj02(latitude, longitude);
请求参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
latitude | double | 是 | 待转换坐标 - 纬度 | Android、iOS |
longitude | double | 是 | 待转换坐标 - 经度 | Android、iOS |
coord | Map | 否 | 返回值 | Android、iOS |
coord返回值说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
latitude | double | 是 | 转换后坐标 - 纬度 | Android、iOS |
longitude | double | 是 | 转换后坐标 - 经度 | Android、iOS |
2.2 wgs84坐标系 --> 国测局坐标系
参数请参照2.1
let coord = aliveModule.wgs84ToGcj02(latitude, longitude);
2.3 国测局坐标系 --> 百度09坐标系
参数请参照2.1
let coord = aliveModule.gcj02ToBd09(latitude, longitude);
2.4 wgs84坐标系 -->百度09坐标系
参数请参照2.1
let coord = aliveModule.wgs84ToBd09(latitude, longitude);
2.5 百度09坐标系 --> wgs84坐标系
参数请参照2.1
let coord = aliveModule.bd09ToWgs84(latitude, longitude);
2.6 国测局坐标系 --> wgs84坐标系
参数请参照2.1
let coord = aliveModule.gcj02ToWgs84(latitude, longitude);
2.7 其他坐标系转高德坐标系 - 仅支持Android (高德定位SDK_API, iOS坐标系转换API在地图SDK内, 但是地图SDK体积太大, 无谓的增加包体积, 不划算)
aliveModule.convertToAmapCoordinate(sourceCoordType, latitude, longitude, callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
sourceCoordType | String | 是 | 待转换坐标系 | Android |
latitude | double | 是 | 待转换坐标 - 纬度 | Android |
longitude | double | 是 | 待转换坐标 - 经度 | Android |
callback | function | 否 | 结果回调 | Android |
sourceCoordType 参数, 能且仅能为下方字符串之一("BAIDU"或"MAPBAR"或"MAPABC"等)
BAIDU、MAPBAR、MAPABC、SOSOMAP、ALIYUN、GOOGLE、GPS
callback参数说明
成员名 | 数据类型 | 说明 | 适用 |
---|---|---|---|
latitude | double | 纬度 | Android |
longitude | double | 经度 | Android |
3 位置判断与距离计算
3.1 判断指定位置是否在大陆以及港、澳地区。
let isAvailable = aliveModule.isAMapDataAvailable(latitude, longitude);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
latitude | double | 是 | 纬度 | Android、iOS |
longitude | double | 是 | 经度 | Android、iOS |
isAvailable | Boolean | * | 返回值 | Android、iOS |
3.2 计算两点间的距离(米)
let distance = aliveModule.calculateLineDistance(lat1, lng1, lat2, lng2);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
lat1 | double | 是 | 坐标点1 - 纬度 | Android、iOS |
lng1 | double | 是 | 坐标点1 - 经度 | Android、iOS |
lat2 | double | 是 | 坐标点2 - 纬度 | Android、iOS |
lng2 | double | 是 | 坐标点2 - 经度 | Android、iOS |
参考
iOS 错误码
成员名 | 值 | 说明 |
---|---|---|
AMapLocationErrorUnknown | 1 | 未知错误 |
AMapLocationErrorLocateFailed | 2 | 定位错误 |
AMapLocationErrorReGeocodeFailed | 3 | 逆地理错误 |
AMapLocationErrorTimeOut | 4 | 超时 |
AMapLocationErrorCanceled | 5 | 取消 |
AMapLocationErrorCannotFindHost | 6 | 找不到主机 |
AMapLocationErrorBadURL | 7 | URL异常 |
AMapLocationErrorNotConnectedToInternet | 8 | 连接异常 |
AMapLocationErrorCannotConnectToHost | 9 | 服务器连接失败 |
AMapLocationErrorRegionMonitoringFailure | 10 | 地理围栏错误 |
AMapLocationErrorRiskOfFakeLocation | 11 | 存在虚拟定位风险 |
AMapLocationErrorNoFullAccuracyAuth | 12 | 精确定位权限异常 |
Android 错误码
成员名 | 值 | 说明 |
---|---|---|
ERROR_CODE_INVALID_PARAMETER | 1 | * |
ERROR_CODE_FAILURE_WIFI_INFO | 2 | * |
ERROR_CODE_FAILURE_LOCATION_PARAMETER | 3 | * |
ERROR_CODE_FAILURE_CONNECTION | 4 | * |
ERROR_CODE_FAILURE_PARSER | 5 | * |
ERROR_CODE_FAILURE_LOCATION | 6 | * |
ERROR_CODE_FAILURE_AUTH | 7 | * |
ERROR_CODE_UNKNOWN | 8 | * |
ERROR_CODE_FAILURE_INIT | 9 | * |
ERROR_CODE_SERVICE_FAIL | 10 | * |
ERROR_CODE_FAILURE_CELL | 11 | * |
ERROR_CODE_FAILURE_LOCATION_PERMISSION | 12 | * |
ERROR_CODE_FAILURE_NOWIFIANDAP | 13 | * |
ERROR_CODE_FAILURE_NOENOUGHSATELLITES | 14 | * |
ERROR_CODE_FAILURE_SIMULATION_LOCATION | 15 | * |
ERROR_CODE_AIRPLANEMODE_WIFIOFF | 18 | * |
ERROR_CODE_NOCGI_WIFIOFF | 19 | * |
ERROR_CODE_FAILURE_COARSE_LOCATION | 20 | * |
ERROR_CODE_NO_COMPENSATION_CACHE | 33 | * |