问题:最近因为公司需求,放弃高德、百度地图的定位,使用系统定位来进行APP的定位功能开发;前端只能获取定位的经纬度,处理办法一般是通过第三方的sdk或后端接口来进行经纬度的中文地址解析.
解决办法:由于环境原因,以上方式都不行;安卓开发是没有以上问题的,可以对系统定位的经纬度进行中文解析。注意:部分机型解析不出来
1、在Android Studio 配置 AndroidManifest.xml文件中的系统定位的权限
<!--定位权限-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_LOGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
2、在Android Studio中处理经纬度
经纬度处理代码 提取码:3146
解压直接放到 java文件夹中
3、配置
在 AndroidManifest.xml 中配置如下
android:name="io.dcloud.simple.test.MyApplication"
tools:replace="android:name"
tools:ignore="HardcodedDebugMode"
在 dcloud_properties.xml 中配置如下
<!--处理系统自带的定位-->
<feature name="elitetyc" value="com.example.H5PlusPlugin.ElitetycPluginTest"/>
<feature name="AndroidBridge" value="io.dcloud.simple.test.AndroidBridge"/>
4、在 HBuilder X 中接收 Android Studio 的定位结果
与安卓交互的代码 提取码:3146
(1)导入
const AndroidBridge = require('@/util/plugin.js');
export default {
data() {
return {
plugins: AndroidBridge,
}
}
}
(2)调用
getAddress(latitude,longitude) {
this.plugins.CallAppFunc(
[latitude,longitude],
function(result) {
uni.showToast({
title: JSON.stringify(result),
icon: 'none',
duration: 5000
});
},
function(result) {
uni.showToast({
title: result,
icon: "none",
duration: 5000
});
}
);
},
最后感谢大佬: 强哥、彬哥的帮助与贡献