UNIAPP中高德地图获取当前所在位置省份、城市、区、详细地址。以及uniapp安卓打包时高德地图应用的详细配置过程,百度地图。

概要

在项目中,我们可能会想要获取到当前的位置,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文件,打包后就可以使用了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值