文章目录
概要
在项目中,我们可能会想要获取到当前的位置,uniapp有提供对应的API进行操作,但是使用和配置过程比较复杂,这里我们做一个总结
打开地图获取位置方法
这里主要做的逻辑是首先获取用户所在位置,然后从地图上选择点位,返回所在点位的详细信息(省、市、区、详细地址)
完整代码
//展示地图方法
showAdd() {
let that = this;
uni.getLocation({
type: "gcj02",
success: function (data) {
console.log(data.longitude);
let latitude = data.latitude;
let longitude = data.longitude;
uni.chooseLocation({
latitude,
longitude,
success: function (res) {
that.place = res;
var add_data = addressard(res.address);
console.log(addressard(res.address));
console.log("位置名称:" + res.name);
console.log("详细地址:" + res.address);
console.log("纬度:" + res.latitude);
console.log("经度:" + res.longitude);
that.form.formList.forEach(item => {
item.fieldVoList.forEach(v => {
if (v.fieldKey === "province") {
v.value = add_data.province;
}
if (v.fieldKey === "city") {
v.value = add_data.city;
}
if (v.fieldKey === "area") {
v.value = add_data.area;
}
if (v.fieldKey === "address") {
v.value = add_data.address;
}
if (v.fieldType === "position") {
v.value = res.longitude + "," + res.latitude;
}
});
});
}
});
}
});
},
分割返回的地址字符串方法(省、市、区、详细地址)
可以通过该方法将一个完整的省市区详细地址字符串分割
代码:
export const addressard = function(address) {
let matches = ''
let province = '';
let city = '';
let area = '';
matches = address.match(/(.*?(省|自治区))/)
if (matches && matches.length > 1) {
province = matches[matches.length - 2];
address = address.replace(province, '');
}
matches = address.match(/(.*?(市|自治州|地区|区划|县))/)
if (matches && matches.length > 1) {
city = matches[matches.length - 2];
address = address.replace(city, '');
}
matches = address.match(/(.*?(区|县|市|镇|乡|街道))/)
if (matches && matches.length > 1) {
area = matches[matches.length - 2];
address = address.replace(area, '');
}
let obj = {
province,
city,
area,
address
}
return obj;
};
UNIAPP manifest文件配置
我们希望打包后 安卓app可以使用地图,那么需要做如下配置
manifest.json
/* SDK配置 */
"sdkConfigs" : {
"maps" : {
"amap" : {
"name" : "你的高德用户名",
"appkey_ios" : "你的高德应用KEY",
"appkey_android" : "你的高德应用KEY"
}
},
"ad" : {},
"geolocation" : {
"system" : {
"__platform__" : [ "ios", "android" ]
},
"amap" : {
"__platform__" : [ "ios", "android" ],
"name" : "你的高德用户名",
"appkey_ios" : "你的高德应用KEY",
"appkey_android" : "你的高德应用KEY"
}
}
},
/* 应用发布信息 */
"distribute" : {
/* android打包配置 */
"android" : {
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
}
这里需要注意:在android打包配置中加上以上2行
高德应用平台配置
在高德开发者平台,注册账号,申请开发者后,在控制台,进入应用管理,我的应用。
应用管理
高德应用-key怎么生成(key名称、SHA1、packageName)
这里我只要说key名称、SHA1、packageName这三个字段如何获取
-
KEY名称
可以随意填写 -
SHA1
首先先将你的应用打出一个apk包,然后解压
进入文件夹,找到META-INF文件夹,打开CMD
这里要注意一下RAS文件的名称-》 keytool -printcert -file ANDROID.RSA
-
packageName
指的是包名
获取到key后,填写到manifest文件,打包后就可以使用了。