微信小程序地理定位与逆地址解析详解

news2025/2/3 22:44:58

地理定位

1 原理与思路

在微信小程序中,地理定位功能可以通过调用微信提供的API接口来实现。这些接口允许我们获取用户的当前位置或者让用户通过地图选择位置。获取到位置信息后,我们可以使用逆地址解析来获取详细的地址信息,如省、市、区、街道等。

例如:

  1. wx.getLocation() :获取当前的地理位置
  2. wx.chooseLocation():打开地图选择位置

申请开通:

暂时只对部分类目的小程序开放,需要先通过类目审核,然后在小程序管理后台,「开发」-「开发管理」-「接口设置」中自助开通该接口权限。

2 使用方法:

  1. 在 app.json 中配置 requiredPrivateInfos 进行声明启用
  2. 在调用 wx.getLocation() 时需要在 app.json 配置 permission 字段,同时使用 scope.userLocation 声明收集用户选择的位置信息的目的,wx.chooseLocation() 接口不需要配置该字段,可以直接进行调用
  3. 在配置好以后,调用 wx.getLocation()wx.chooseLocation() 接口

参考文档:

  1. 地理位置接口新增与相关流程调整
  2. permission 字段说明

app.json 中进行配置

{
  "requiredPrivateInfos": [
    "getLocation",
    "chooseLocation"
  ],
  "permission": {
    "scope.userLocation": {
      "desc": "获取用户位置信息用于填写收货地址"
    }
  }
}

getLocation 使用:

// 地理定位
async onLocation() {
  // 获取 纬度 、精度
  const { latitude, longitude } = await wx.getLocation()
  console.log(location)
}

chooseLocation 使用:

// 地理定位
async onLocation() {
  // 打开地图选择位置,获取 纬度 、精度
  const { latitude, longitude }  = await wx.chooseLocation()
  console.log(res)
}

逆地址解析

步骤:

  1. 前置操作
  2. 在项目中引入 SDK 核心类
  3. onLoad 中实例化 API 核心类,同时配置创建的 key
  4. 使用实例方法 reverseGeocoder 方法进行逆地址解析,将提供的坐标转换为详细的地址位置信息

官方文档-基础示例:Hello World

官方文档-逆地址解析:reverseGeocoder

前置操作:

  1. 申请密钥:密钥申请,微信扫码进行登录,选择绑定已有账号、或者注册新账号 (需要绑定手机、验证邮箱)
  2. 开通 webserviceAPI 服务:控制台 → 应用管理→我的应用 → 添加 key →勾选 WebServiceAPI →保存
  3. 下载微信小程序 JavaScriptSDK,微信小程序JavaScriptSDK v1.1 JavaScriptSDK v1.2(推荐后者);下载后将压缩包内容到 libs(新建文件夹)下
  4. 进行安全域名设置,或者点击微信开发者工具中的暂时不校验域名。(若要添加则在小程序管理后台 -> 开发 -> 开发管理 -> 开发设置 -> “服务器域名” 中设置request合法域名,添加https://apis.map.qq.com)

实现代码:

// 顶部引入腾讯地图微信小程序JS SDK
import QQMapWX from '../../../../../libs/qqmap-wx-jssdk.min'

// 获取用户地理位置信息
  async onLocation() {
    // 打开地图让用户选择地理位置
    const { latitude, longitude, name } = await wx.chooseLocation()
    
    // 使用腾讯地图的reverseGeocoder方法逆地址解析
    this.qqmapsdk.reverseGeocoder({
      location: {
        longitude,
        latitude
      },
      success: (res) => {
        // 从结果中获取省市区、省市区编码等信息
        const { adcode, province, city, district } = res.result.ad_info

        // 获取街道和门牌号
        const { street, street_number } = res.result.address_component

        // 获取标准地址
        const { standard_address } = res.result.formatted_addresses

        // 格式化并更新data中的地址信息
        this.setData({
          provinceName: province,
          provinceCode: adcode.replace(adcode.substring(2, 6), '0000'),
          cityName: city,
          cityCode: adcode.replace(adcode.substring(4, 6), '00'),
          districtName: district,
          districtCode: district && adcode,
          address: street + street_number + name,
          fullAddress: standard_address + name
        })
      },
      fail:(err)=>{
        // 打印错误信息
        console.log(err)
      }
    })
  },
 // 页面加载生命周期函数
  onLoad: function () {
    // 实例化腾讯地图API核心类,传入key
    this.qqmapsdk = new QQMapWX({
      key: 'JXMBZ-NFU3Z-GL4XO-TH7OC-IHJ36-TSFQG'
    })
  }

代码部分解析:

  1. 行政区域代码为何如此区分

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

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

相关文章

CUDA安装教程

文章目录 一、CUDA的下载和安装1.1 查看NVIDIA适配CUDA版本1.2 下载CUDA Toolkit1.3 安装CUDA 二、环境配置三、查看是否安装成功 一、CUDA的下载和安装 CUDA在深度学习中允许开发者充分利用NVIDIA GPU的强大计算能力来加速深度学习模型的训练和推理过程。 1.1 查看NVIDIA适配…

15分钟学 Python 第39天:Python 爬虫入门(五)

Day 39:Python 爬虫入门数据存储概述 在进行网页爬虫时,抓取到的数据需要存储以供后续分析和使用。常见的存储方式包括但不限于: 文件存储(如文本文件、CSV、JSON)数据库存储(如SQLite、MySQL、MongoDB&a…

多模态理论基础——什么是多模态?

文章目录 多模态理论1.什么是多模态(multimodal)2.深度学习中的多模态 多模态理论 1.什么是多模态(multimodal) 模态指的是数据或者信息的表现形式,如文本、图像、音频、视频等 多模态指的是数据或者信息的多种表现…

算法笔记(十)——队列+宽搜

文章目录 N 叉数的层序遍历二叉树的锯齿形层序遍历二叉树最大宽度在每个树行中找最大值 BFS是图上最基础、最重要的搜索算法之一; 每次都尝试访问同一层的节点如果同一层都访问完了,再访问下一层 BFS基本框架 void bfs(起始点) {将起始点放入队列中;标记…

一款基于.NET开发的简易高效的文件转换器

前言 今天大姚给大家分享一款基于.NET开发的免费(GPL-3.0 license)、简易、高效的文件转换器,允许用户通过Windows资源管理器的上下文菜单来转换和压缩一个或多个文件:FileConverter。 使用技术栈 ffmpeg:作为文件转换…

vite学习教程03、vite+vue2打包配置

文章目录 前言一、修改vite.config.js二、配置文件资源/路径提示三、测试打包参考文章资料获取 前言 博主介绍:✌目前全网粉丝3W,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技术内容&…

Python | Leetcode Python题解之第457题环形数组是否存在循环

题目: 题解: class Solution:def circularArrayLoop(self, nums: List[int]) -> bool:n len(nums)def next(cur: int) -> int:return (cur nums[cur]) % n # 保证返回值在 [0,n) 中for i, num in enumerate(nums):if num 0:continueslow, fas…

Qt中使用QPainter绘制阴影

困扰了很久的问题,今天终于明白了如何绘制QGraphicDropShadowEffect同样效果的阴影,故写下这篇文章分享给大家。其方法是复制Qt源代码中QGraphicDropShadowEffect绘制实现的核心代码然后稍作修改实现,先看效果和封装过后的源代码:…

在 Ubuntu 安装 Python3.7(没有弯路)

注:当前Ubuntu版本为18.04 下载Python源码包 wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz安装前准备 安装依赖组件 apt-get updateapt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libs…

c++----多态(初识)

大家好,今天我们来讲讲我们c中的一个关键知识,叫做多态。但是我们学习多态之前必须将我们前面学习过的继承学习过后才能学习。当然大家可能会先想什么叫多态,我们从名字上上看的话就是多种姿态嘛。毕竟看起来这么容易理解,但其实也…

服务器conda环境安装rpy2

参考博客 https://stackoverflow.com/questions/68936589/how-to-select-r-installation-when-using-rpy2-on-conda 现在我遇到这样一个问题,服务器系统环境没有R(没有权限安装),我只能在minconda的conda环境中使用R, 使用方法如下 我现在…

Rocky Linux 9搭建K8s-1.28.0+docker一主多从集群测试环境

集群类型: Kubernetes集群大体上分为两类:一主多从和多主多从 一主多从:一台master节点和多台node节点,搭建简单,但是有单机故障风险,适用于测试环境 多主多从:多台master节点和多台node节点&am…

ELK日志收集之ES的DSL查询语句

一、简介 在Elasticsearch中,我们可以使用Elasticsearch-DSL(Elasticsearch Domain Specific Language)来构建和执行复杂的搜索查询。官方Query DSL指导文档。 叶查询:在特定字段中寻找特定值,例如 match ,term 或 range。 复合查询:具有查询…

【进阶OpenCV】 (5)--指纹验证

文章目录 指纹验证1. 验证原理2. 读取图片3. 计算特征匹配点 总结 指纹验证 指纹验证基于人类指纹的独特性和稳定性。每个人的指纹在图案、断点和交叉点上各不相同,这种唯一性和终生不变性使得指纹成为身份验证的可靠手段。指纹识别技术通过采集和分析指纹图像&…

39 C 语言枚举类型、枚举常量、枚举变量、枚举的遍历、枚举数组、枚举与 switch

目录 1 什么是枚举 2 定义枚举类型 2.1 语法格式 2.2 枚举元素的特点 2.3 案例演示 3 枚举变量 3.1 什么是枚举变量 3.2 定义枚举变量的多种方式 3.3 案例演示 1:标准版枚举类型 3.4 案例演示 2:简化版枚举类型 3.5 案例演示 3:匿…

【教学类-77-01】20241005青花瓷立体书

背景需求: 今天翻到小红书上一个青花瓷立体书 🇭🇰香港免费展览|青花瓷立体纸艺观展册📖 - 小红书 (xiaohongshu.com)https://www.xiaohongshu.com/discovery/item/6426a8fb000000001303653e?app_platformandroid&a…

买卖股票大合集

刷题刷题往死里刷。 121. 买卖股票的最佳时机 链接 121. 买卖股票的最佳时机 思路: 二次做所以有思路了, 从头遍历数组,维持一个最小值,且遇到一个值就计算差值,且维护这个最大值为答案。 class Solution {public …

文心智能体——制作你的专属AI

随着社会的进步和互联网技术的发展,人工智能领域正蓬勃发展。最近几年关于人工智能的新闻日渐增多并且成为了当代最大的热点,所有的领域都在引进AI、训练AI、使用AI,AI正逐步融入人们的生活。从前几年chatGPT大语言模型的横空出世&#xff0c…

【CSDN入门级教程】

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Linux进程调度和进程切换

并行(Parallel) 含义:并行是指多个任务在同一时刻同时执行。 硬件要求:需要多个处理器(如多核CPU)或者多台计算设备来实现,这些执行单元能够真正地同时处理不同的任务。例如,一个具…