点餐小程序实战教程18获取用户的所在城市

news/2024/10/10 2:09:22/

目录

  • 1 集成高德地图
  • 2 逆地址解析
  • 3 小程序启动时候获取位置
  • 总结

小程序我们希望用户登录后默认显示用户的城市,这就要结合小程序的定位API和高德地图API的功能,本篇我们讲解一下具体的实现过程

1 集成高德地图

腾讯地图已经不给个人开发者额度了,那我们就没法进行测试开发。那就切换一个地图组件,这篇教程我们切换成高德地图

打开高德地图的控制台,添加Key
在这里插入图片描述
选择web服务
在这里插入图片描述

2 逆地址解析

我们在小程序可以通过getLocation接口获取用户的当前位置信息,得到的是经纬度,可以通过调用逆地址解析接口获取所在的城市信息

打开APIs,创建一个逆地址解析的方法,类型选择http请求
在这里插入图片描述
输入如下的URL

https://restapi.amap.com/v3/geocode/regeo?parameters

方法选择get,添加两个入参,key和location
在这里插入图片描述
在Query添加Key,value从入参里选择
在这里插入图片描述
点击方法测试,传入正确的参数就可以看到返回结果,点击出参自动映射
在这里插入图片描述
在调试的时候注意是三位数在前,两位数在后

3 小程序启动时候获取位置

我们小程序一启动的时候我们就获取一下位置信息,需要获取位置信息的,首先要打开授权。点击编辑器底部的代码编辑器
在这里插入图片描述
在mp config里打开配置,贴入如下配置

export default {appJson: {// 小程序接口权限相关设置,可选permission: {'scope.userLocation': {desc: '你的位置信息将用于小程序位置接口的效果展示',},}, },
}

在这里插入图片描述

在lifecycle里贴入如下代码

export default {onAppLaunch(launchOpts) {//console.log('---------> LifeCycle onAppLaunch', launchOpts)wx.getLocation({type: 'wgs84',async success(res) {const latitude = res.latitudeconst longitude = res.longitudeconst speed = res.speedconst accuracy = res.accuracyconsole.log(latitude, longitude)// 调用高德地图APIconst result = await $w.cloud.callDataSource({dataSourceName: 'ctgl_jb3folg',methodName: 'regeo',params: {key:"154efad",location:  longitude+ ',' + latitude} // 方法入参});$w.app.dataset.state.city = result.regeocode.addressComponent.city}})},onAppShow(appShowOpts) {//console.log('---------> LifeCycle onAppShow', appShowOpts)},onAppHide() {//console.log('---------> LifeCycle onAppHide')},onAppError(options) {//console.log('---------> LifeCycle onAppError', options)},onAppPageNotFound(options) {//console.log('---------> LifeCycle onAppPageNotFound', options)},onAppUnhandledRejection(options) {//console.log('---------> LifeCycle onAppUnhandledRejection', options)}
}

在这里插入图片描述
主要代码里的Key要替换成你自己的key

总结

我们本篇介绍了集成高德地图,调用逆地址解析的方法。在低代码开发中,免不了要集成各类第三方的接口,通过设置数据源的API就可以方便的和对方集成。


http://www.ppmy.cn/news/1536863.html

相关文章

技术小谈|Map还能这么玩

一. 前言 最近,我在协助同事优化一段批处理任务时,偶然发现了一个有趣的问题。我们使用了一个庞大的 HashMap,每次获取数据之前都会调用 containsKey() 方法。这就像在寻找一把钥匙之前,先要确认这个钥匙是否存在一样。结果&…

关于cannot import name ‘PPTGenerate‘ from partially initialized module

今天执行别人写的代码的时候出现了这样一个问题 “cannot import name ‘PPTGenerate’ from partially initialized module ‘ppt_generate’ (most likely due to a circular import)” 找了很多,网上有说循环引用,有说文件名冲突,但是我这…

废物利用,三百块电脑如何升级并安装双系统便携使用

文章目录 引言最初的配置开始改装更换内存升级硬盘2.5 英寸 sata 固态msata 加装 升级电池其他的升级娱乐大师跑分 双系统安装前提条件设置 Bios安装 win 10安装 Manjaro时间同步问题 屏幕问题黑屏难开 引言 最近浏览 b 站的二手笔记本信息,想要整个二手笔记本玩玩…

3.点位管理改造-列表查询——帝可得管理系统

目录 前言一、与页面原型差距1.现在:2.目标:3. 存在问题: 二、修改1.重新设计SQL语句2.修改mapper层,使用Mybatis中的嵌套查询3.修改service层4. 修改controller层5.前端修改6.补充区域查看详情7.数据完整性 前言 提示&#xff1…

项目管理-信息技术发展

1、计算机软硬件 2、计算机网络 1)定义 2)分类:PAN LAN MAN WAN 公用网 专用网 3)网络协议 语法 语义 时许 4)网络标准协议 7层 5)IEEE 802 规范 6)TCP/IP 协议 7) SDN 软件定义网…

C++面试速通宝典——13

208. class里面定义int a,如果不实现构造函数,实例化这个类,a的值是? ‌‌‌‌  答:a的值是未定义的(在C标准中成为“未初始化”)。 解释: ‌‌‌‌  在C中,如果一…

Leetcode: 0001-0010题速览

Leetcode: 0001-0010题速览 本文材料来自于LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 遵从开源协议为知识共享 版权归属-相同方式…

大厂面试真题-说说AtomicInteger 线程安全原理

基础原子类(以 AtomicInteger 为例)主要通过 CAS 自旋 volatile 相结合的方案实现,既保障了 变量操作的线程安全性,又避免了 synchronized 重量级锁的高开销,使得 Java 程序的执行效率大为 提升。 CAS 用于保障变量…