uniapp相关地图 API调用

目录

[一、 注意事项: manifest.json需增加配置](#一、 注意事项: manifest.json需增加配置)

[二、获取用户收货地址 [uni.chooseAddress]](#二、获取用户收货地址 [uni.chooseAddress])

[三、获取当前的地理位置、速度 [uni.getLocation]](#三、获取当前的地理位置、速度 [uni.getLocation])

[四、打开地图选择位置、查看位置(导航) [uni.chooseLocation] [uni.openLocation]](#四、打开地图选择位置、查看位置(导航) [uni.chooseLocation] [uni.openLocation])

五、使用腾讯地图逆地址解析接口实现城市自动定位回显


一、 注意事项: manifest.json需增加配置
bash 复制代码
"mp-weixin": {
	"requiredPrivateInfos": ["chooseLocation", "getLocation", "getLocation","chooseAddress"],
	"permission": {
		"scope.userLocation": {
			"desc": "你的位置信息将用于小程序位置接口的效果展示"
		}
	}
},
二、获取用户收货地址 [uni.chooseAddress]

API接口参考:https://uniapp.dcloud.net.cn/api/other/choose-address.html#chooseaddress

1、效果图

2、vue页面代码

bash 复制代码
<template>
	<view>
		<u-icon size="12" name="arrow-down" label="选择地址" labelPos="left"
						@click="citySelect()"></u-icon>
	</view>
</template>

<script>
	export default {
		data() {
			return {
			}
		},
		
		methods: {
			citySelect(){
				uni.chooseAddress({
					type: 'wgs84', 
					success: (res) => {
						console.log(res)
					},
					fail: (err) => {
						console.error('获取位置失败:', err);
					}
				})
			},
		}
	};
</script>

<style>
	page {
		height: 100%;
		background: white;
	}

	.homePage {
		padding-bottom: 5px;

	}
</style>
三、获取当前的地理位置、速度 [uni.getLocation]

API接口参考:https://uniapp.dcloud.net.cn/api/location/location.html#getlocation

1、调用方式

bash 复制代码
uni.getLocation({
	type: 'wgs84', // 返回可以用于uni.openLocation的经纬度,默认为wgs84的gps坐标
	success: (res) => {
		console.log(res)
	},
	fail: (err) => {
		console.error('获取位置失败:', err);
	}
});

2、res结果

bash 复制代码
{  
    "latitude": 29.56471,  
    "longitude": 106.55073,  
    "speed": -1,  
    "accuracy": 65,  
    "verticalAccuracy": 65,  
    "horizontalAccuracy": 65,  
    "errMsg": "getLocation:ok"  
}
四、打开地图选择位置、查看位置(导航) [uni.chooseLocation] [uni.openLocation]

API接口参考:

https://uniapp.dcloud.net.cn/api/location/location.html#chooselocation

https://uniapp.dcloud.net.cn/api/location/open-location.html#openlocation

1、效果图

2、子组件代码

html 复制代码
<template>
	<view>
		<map id="map" longitude="116.397470" latitude="39.908823" scale="14" @tap="chooseLocation"
			style="width: 100%; height: 300px;"></map>
		<!-- <view v-if="location">
			位置:{{ location.address }}
			<button @click="navigateTo">导航到这里</button>
		</view> -->
	</view>
</template>

<script>
	export default {
		data() {
			return {
				location: null
			}
		},
		methods: {
			chooseLocation() {
				const that = this;
				uni.chooseLocation({
					success(res) {
						that.location = {
							latitude: res.latitude,
							longitude: res.longitude,
							address: res.address,
						};
						that.callParent();
					},
					fail(err) {
						console.log('选择位置失败:', err);
					},
				});
			},
			callParent() {
				//传值回父组件
				this.$emit('parentMethod', this.location);
			},
			navigateTo() {
				if (this.location) {
					uni.openLocation({
						latitude: this.location.latitude,
						longitude: this.location.longitude,
						address: this.location.address,
						success() {
							console.log('导航成功');
						},
						fail(err) {
							console.log('导航失败:', err);
						},
					});
				}
			},
		}
	}
</script>

<style>
</style>

3、父组件使用子组件

html 复制代码
<template>
	<view class="box">
		<!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 -->
		<u--form labelWidth="120" labelPosition="top" labelAlign="left" :labelStyle="{'fontSize':'14px'}" :model="form"
			<u-form-item label="位置信息" prop="location">
				<view>{{location.address}}</view>
				<map-select @parentMethod="callLocation"></map-select>
			</u-form-item>
		</u--form>
	</view>
</template>

<script>
	import MapSelect from "@/pages/assembly/MapSelect.vue";
	export default {
		components: {
			'map-select': MapSelect
		},
		data() {
			return {
				form:{},
				location:{}
			};
		},

		methods: {
			callLocation(location){
				console.log("父组件print:",location);
				this.location=location;
			}
		},
	};
</script>

<style>
	page {
		height: 100%;
		background: white;
	}

	.box {
		margin: 10px 20px 20px 20px;
	}

	.confirmButton {
		padding-bottom: 50px;
	}

	.u-form-item__body__left.data-v-5e7216f1 {
		position: relative;
	}

	.u-form-item__body__left__content.data-v-5e7216f1 {
		position: absolute;
		top: 0;
	}
</style>

4、res结果

javascript 复制代码
{  
    "errMsg": "chooseLocation:ok",  
    "name": "雾都宾馆",  
    "address": "重庆市渝中区上曾家岩24号",  
    "latitude": 29.565184,  
    "longitude": 106.551766  
}
五、使用腾讯地图逆地址解析接口实现城市自动定位回显

uniapp中腾讯地图SDK-安装及配置(自动定位回显城市)-CSDN博客

相关推荐
ChinaRainbowSea1 小时前
用户中心——比如:腾讯的QQ账号可以登录到很多应用当中 02
java·服务器·spring boot·后端·mysql·mybatis
青竹易寒2 小时前
Linux命令技术笔记-sed+awk命令详解
linux·运维·服务器
试着3 小时前
零基础学习性能测试第二章-linux服务器监控:CPU监控
linux·服务器·学习·零基础·性能测试·cpu监控
绵绵细雨中的乡音3 小时前
Linux进程通信——共享内存:System V 进程间通信的极速方案
linux·运维·服务器
Littlewith4 小时前
Node.js:Stream、模块系统
java·服务器·开发语言·node.js·编辑器
步、步、为营4 小时前
.NET 8 中的 KeyedService
运维·服务器·.net
<但凡.5 小时前
Git 完全手册:从入门到团队协作实战(2)
服务器·git·bash
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
struts·apache·iotdb
虚!!!看代码5 小时前
uni-app 跳转页面传参
前端·vue.js·uni-app
脑袋大大的5 小时前
UniApp 自定义导航栏:解决安全区域适配问题的完整实践
前端·javascript·安全·uni-app·uniapp·app开发·uniappx