uniapp小程序:使用uni.getLocation通过腾讯地图获取相关地址信息详情(超详细)

news2025/1/11 16:56:14

先看运行结果:

流程:

1、在edge网页搜索腾讯位置服务

搜索后点击这里

已经有账号的就进行登录,没有账号的进行注册即可

点击控制台:

进去后点击成员管理---->我的应用---->创建应用

输入相应的参数应用名称(随便写)和应用类型更具你的项目类型进行选择我选择了出行

选择好后点击创建:

创建好后点击添加key:

打开微信小程序开发工具:

这样就获取到了key:

2、下载腾讯小程序JavaScriptJDK点击即可跳转

微信小程序JavaScript SDK | 腾讯位置服务 (qq.com)

下载其中一个都可以

解压后放在common目录下皆可,如果没有common路面自己生成即可。

3、安全域名设计

在微信小程序后台小程序 (qq.com)​​​​​​

添加request合法域名,添加apis.map.qq.com

4、配置manifest.json文件

 "permission" : {
            "scope.userLocation" : {
                "desc" : "为了您更好的体验,请确认获取您的位置"
            }
        },
        "requiredPrivateInfos" : [ "getLocation", "chooseLocation", "chooseAddress" ]

5、引用代码演示

我这里吧方法引入到mixins中

//获取用户实时位置
import QQMapWX from "../../common/qqmap-wx-jssdk.js"

//获取用户实时位置
import QQMapWX from "../../common/qqmap-wx-jssdk.js"
export const showMixin ={
	data(){
		return{
			show: true
		}
	},
	methods:{
		showto(){
			this.show=!this.show
			console.log('this.show',this.show)
			uni.navigateBack({
				delta:1
			})
			
		},
		async getLocationInfo() {
			// this.show = !this.show
			return new Promise((resolve) => {
				let location = {
					longitude: 0,
					latitude: 0,
					province: "",
					city: "",
					area: "",
					street: "",
					address: "",
				};
				uni.getLocation({
					type: "gcj02",
					success(res) {
						location.longitude = res.longitude;
						location.latitude = res.latitude;
		
						const qqmapsdk = new QQMapWX({
							key: 'ANDBZ-VEM6T-IPIXG-VEWUH-XJYGS-N2BPT'
						});
						qqmapsdk.reverseGeocoder({
							location,
							success(response) {
								let info = response.result;
								console.log(info);
								location.province = info.address_component.province;
								location.city = info.address_component.city;
								location.area = info.address_component.district;
								location.street = info.address_component.street;
								location.address = info.address;
								resolve(location);
							}
						});
					},
					fail(err) {
						console.log(err)
					}
				})
			})
		}
	}
}

显示:

引入:

生命周期调用:

代码直接使用即可:

<template>
	<view class="site">
		<view class="map">
			<uni-search-bar class="uni-mt-10" radius="100" placeholder="搜索城市/区县/地点" clearButton="none"
				cancelButton="none" @confirm="search" />
		</view>

		<view class="current">
			<view style="display: flex; font-size: 28rpx; line-height: 44rpx;">
				<uni-icons type="location" size="20"></uni-icons>
				<txte v-if="position !== null">当前位置:{{position}}</txte>
			</view>
			<view style="display: flex; color: #4687e1; font-size: 28rpx;" @click="showto">
				<image src="../../../static/images/tabbar/locations.png" mode="aspectFill"
					style="width: 35rpx; height: 35rpx; margin-right: 10rpx;"></image>
				<text>刷新定位</text>
			</view>

		</view>
		<view class="chosen">
			<view v-for="(item,index) in list" :key="index" class="box" @click="selects(index)"
				:class="{'active': activeindex === index}">
				{{item.name}}
				<view class="line" v-if="activeindex === index"></view>
			</view>
		</view>

		<view class="area">
			<view class="area-box" v-for="(item,index) in box" :key="index" @click="city(index)"
				:class="{'active': activeindexs === index}">
				{{item.name}}
			</view>
		</view>

		<view class="ess">
			<view v-if="activeindexs !== -1" class="area-box" v-for="(item,index) in boxs" :key="index"
				@click="citys(index)" :class="{'active': activeindextwo === index}">
				{{item.name}}
			</view>
		</view>

		<uni-popup ref="popup" background-color="#fff">
			<view style="width: 300rpx; height: 300rpx;">
				<uni-loading></uni-loading>
			</view>
			
		</uni-popup>
	</view>
</template>

<script>
	// import QQMapWX from "../../../common/qqmap-wx-jssdk.js"
	import {
		showMixin
	} from '../../../shopro/mixins/site.js'
	export default {
		mixins: [showMixin],
		data() {
			return {
				position: null,
				activeindex: 0,
				activeindexs: -1,
				activeindextwo: -1,
				list: [{
					name: '贵州省'
				}],
				box: [{
						name: '贵阳市'
					},
					{
						name: '安顺市'
					},
					{
						name: '遵义市'
					},
					{
						name: '毕节市'
					},
					{
						name: '黔东南'
					},
					{
						name: '黔东南'
					},
					{
						name: '黔东南'
					},
					{
						name: '黔东南'
					}
				],
				boxs: [{
						name: '花溪区'
					},
					{
						name: '观山湖区'
					},
					{
						name: '南明区'
					},
					{
						name: '云岩区'
					},
					{
						name: '白云区'
					},
					{
						name: '清镇'
					}
				],

			}
		},
		async mounted() {
			const location = await this.getLocationInfo();
			console.log('location', location)
			// that.position = location.province + location.city
			let position = location.province + location.city + location.area
			console.log('position', position)
			this.position = position

		},
		methods: {
			citys(index) {
				this.activeindextwo = index
			},
			city(index) {
				this.activeindexs = index
			},
			selects(index) {
				this.activeindex = index
				uni.showLoading({
					title:'加载中',
					mask: true
				})
				// this.$refs.popup.open('center')
			}
		},
		// change(e){
		// 	console.log('当前模式:' + e.type + ',状态:' + e.show);
		// }
	}
</script>

<style scoped>
	.area-box {
		width: 130rpx;
		height: 80rpx;
		background-color: #fff;
		text-align: center;
		line-height: 80rpx;
		margin-top: 20rpx;
		margin-right: 10rpx;
		margin-left: 10rpx;
		border-radius: 20rpx;
	}

	.ess {
		width: 100vw;
		height: 300rpx;
		/* 	background-color: #c9c9c9; */
		display: flex;
		justify-content: flex-start;
		align-items: flex-start;
		flex-flow: row wrap;
		align-content: flex-start;
		overflow-y: scroll;
	}

	.area {
		width: 100vw;
		height: 300rpx;
		/* background-color: aqua; */
		display: flex;
		justify-content: flex-start;
		align-items: flex-start;
		flex-flow: row wrap;
		align-content: flex-start;
		overflow-y: scroll;
	}

	.line {
		position: absolute;
		bottom: 10rpx;
		width: 70%;
		height: 5rpx;
		background-color: brown;
		border-radius: 50rpx;
		left: 0;
		right: 0;
		margin: auto;
	}

	.box {
		width: 130rpx;
		height: 100%;
		/* background-color: antiquewhite; */
		text-align: center;
		line-height: 80rpx;
	}

	.active {
		font-weight: bold;
		position: relative;
	}

	.chosen {
		width: 100vw;
		height: 80rpx;
		padding: 0 20rpx;
		background: #f8f8f8;
	}

	.current {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 100vw;
		height: 100rpx;
		padding: 0 30rpx;
	}

	.map {
		width: 100vw;
		height: 100rpx;
	}

	.site {
		width: 100vw;
		height: 100vh;
		background-color: #fff;
	}
</style>

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1519962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker:常用命令

文章目录 docker作用常用指令 docker 作用 Docker 是一种容器化平台&#xff0c;可以让开发者打包应用程序及其依赖项&#xff0c;并以容器的形式进行发布、交付和运行。 Docker 的一些主要作用&#xff1a; 应用程序隔离&#xff1a;Docker 使用容器技术&#xff0c;将应用程…

NCP1271D65R2G中文资料规格书PDF数据手册引脚图参数图片价格功能特性描述

产品描述&#xff1a; NCP1271 是成功的 7 引脚电流模式 NCP12XX 系列的新一代引脚-引脚兼容新产品。该控制器通过使用可调节 Soft Skip 模式和集成的高电压启动 FET&#xff0c;实现了卓越的待机功耗。此专属 Soft Skip 还大大降低了噪音的风险。 因此可以在箝位网络中使用不…

音频提取:分享几个常用方法,简单好用

有时候我们会在视频中发现一首非常好听的歌曲&#xff0c;但是我们并不需要视频本身。 这时&#xff0c;我们可以提取视频中的音频&#xff0c;将其转化为音频文件&#xff0c;然后在任何时间、任何地点进行欣赏。 下面给大家分享几个提取视频中音频的几个方法&#xff0c;供…

vue/uniapp路由history模式下宝塔空间链接打开新窗口显示404解决方法

vue/uniapp路由history模式下宝塔空间链接打开新窗口显示404&#xff0c;或者域名后带路径参数刷新就报404 解决方法&#xff1a; 宝塔中站点配置修改&#xff1a;【配置文件】中添加下面代码&#xff0c;具体如图&#xff1a; location / {try_files $uri $uri/ /index.html…

【Go语言】Go语言中的函数

Go语言中的函数 Go语言中&#xff0c;函数主要有三种类型&#xff1a; 普通函数 匿名函数&#xff08;闭包&#xff09; 类方法 1 函数定义 Go语言函数的基本组成包括&#xff1a;关键字func、函数名、参数列表、返回值、函数体和返回语句。Go语言是强类型语言&#xff0…

【C#】数组string类型输出

示例 代码 internal class Program{static void Main(string[] args){List<int> list new List<int>() { 1,2,3,4,5,6,7,8,9,10};string output1 string.Join(",", list);Console.WriteLine(output1);string output2 string.Join("\n", lis…

深度学习指标| 置信区间、Dice、IOU、MIOU、Kappa

深度学习部分指标介绍 置信区间混淆矩阵DiceIOU和MIOUKappa 置信区间 95%CI指标 读论文的时候&#xff0c;常会看到一个“95%CI”的评价指标。 其中CI指的是统计学中的置信区间&#xff08;Confidence interval&#xff0c;CI&#xff09;。在统计学中&#xff0c;一个概率样…

【Streamlit学习笔记】实现包含多个sheet的excel文件下载

1、什么是Streamlit Streamlit是一个免费的开源框架&#xff0c;用于快速构建和共享漂亮的机器学习和数据科学Web应用程序&#xff0c;官网链接 Streamlit Streamlit API链接 API reference 实际项目中遇到的问题&#xff1a;包含多个sheet的excel文件下载&#xff0c;下面将给…

小程序路由跳转---事件通信通道EventChannel(二)

事件通信通道EventChannel实现两个页面之间的数据传输已在上篇小程序路由跳转—事件通信通道EventChannel&#xff08;一&#xff09;展开叙述&#xff0c;接下来讨论下多个页面&#xff08;三个及以上&#xff09;数据的通道如何构建。 本文重点&#xff1a;三个以上页面需将…

使用 Boot Camp 助理查明您的 Mac 需不需要 Windows 安装介质

使用 Boot Camp 助理查明您的 Mac 需不需要 Windows 安装介质 当前的 Mac 机型无需介质即可安装 Windows&#xff0c;也就是说&#xff0c;您不需要用到外置驱动器。较早的 Mac 机型需要用到 USB 驱动器或光盘驱动器。使用 Boot Camp 助理可查明您需要用到什么。 Boot Camp 助…

openGauss使用BenchmarkSQL进行性能测试(下)

上一篇我们分享了测试方法&#xff0c;本篇我们将发起测试及测试结果。 背景 本文提供openGauss使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL&#xff0c;一个JDBC基准测试工具&#xff0c;内嵌了TPC-C测试脚本&#xff0c;支持很多数据库&#xff0c;…

百度paddleocr GPU版部署

显卡&#xff1a;NVIDIA GeForce RTX 4070&#xff0c;Nvidia驱动程序版本&#xff1a;537.13 Nvidia驱动程序能支持的最高cuda版本&#xff1a;12.2.138 Python&#xff1a;python3.10.11。试过python3.12&#xff0c;安装paddleocr失败&#xff0c;找不到相关模块。 飞桨版本…

使用C#的winform控制数据库实例服务的运行状态

一、得到sqlserver的实例名 二、引用对应的程序集和命名空间 using System.ServiceProcess; C#操作服务要用的类 ServiceController 声明类 private ServiceController serviceController new ServiceController("MSSQLSERVER"); 三、判断服务状态 serviceCon…

centos云服务器安装cs(cobaltstrike4.0)教程

1、先安装JAVA环境 mkdir download #创建download目录 cd download #进入download目录 mkdir java1.8 #在download目录下再创建java1.8目录 cd java1.8 #进入java1.8目录 wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz #下载jdk压缩包 tar…

HarmonyOS NEXT应用开发—验证码布局

介绍 本示例介绍如何使用Text组件实现验证码场景&#xff0c;并禁用对内容的选中、复制、光标。 效果图预览 使用说明 单击组件可弹出输入法在进行验证码输入时&#xff0c;无法对中间单个数字进行更改&#xff0c;无法选中输入内容&#xff0c;无光标 实现思路 因为要禁用…

c语言实现https客户端 源码+详细注释(OpenSSL下载,visual studio编译器环境配置)

OpenSSL的下载和环境配置 请参考&#xff1a;openssl下载安装教程 步骤&#xff1a;官网下载->安装到选定目录->配置环境变量->打开命令窗口检查是否安装成功 注意&#xff1a; 打开命令窗口&#xff08;快捷键winr,在弹出窗口内输入cmd按回车&#xff09;&#xff0…

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用本方案的S…

用连续自然数之和来表达整数 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 一个整数可以由连续的自然数之和来表示。给定一个整数&#xff0c;计算该整数有几种连续自然数之和的表达式&#xff0c;且打印出每种表达式。 输入描述 一个目…

1.Python数据分析—数据分析与挖掘详讲

1.Python数据分析—数据分析与挖掘详讲 一个人简介二数据分析与挖掘概述三什么是数据分析和挖掘四数据分析与挖掘在不同领域的应用4.1医疗领域&#xff1a;4.1.1 建立疾病数据库&#xff1a;4.1.2 临床决策支持&#xff1a;4.1.3 疾病预警和监控&#xff1a; 4.2 电子商务领域&…

还原wps纯粹的编辑功能

1.关闭稻壳模板&#xff1a; 1.1. 启动wps(注意不要乱击稻壳模板&#xff0c;点了就找不到右键菜单了) 1.2. 在稻壳模板选项卡右击&#xff1a;选不再默认展示 2.关闭托盘中wps云盘图标&#xff1a;右击云盘图标/同步与设置&#xff1a; 2.1.关闭云文档同步 2.2.窗口选桌面应用…