uni-app - 小程序使用高德地图完整版

🍉功能描述

页面自动通过定位获取用户位置并展示周边POI数据,同时支持关键词输入实时联想推荐关联地点信息,
实现精准智能的地点发现与检索功能。

🍉效果

在这里插入图片描述

🍉开发环境

unibest 2.5.4
node v18.20.5
pnpm 9.14.2
wot-design-uni ^1.7.1

开发之前一定要申请高德开放平台小程序key
在这里插入图片描述

### 如何在 UniApp 中调用小程序 API 在 UniApp 开发框架中,可以通过 `uni` 对象来访问原生的小程序 API 功能。这些 API 提供了丰富的操作能力,例如授权、网络请求、设备信息获取等。 以下是几个常见的场景及其对应的代码示例: #### 1. 微信登录 通过微信登录可以获取用户的 openid 和 session_key 等信息。以下是一个基于引用[2]中的代码改进后的微信登录实现方式: ```javascript // 获取用户授权信息 getAuthorizeInfo() { return new Promise((resolve, reject) => { uni.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经授权过 uni.getUserInfo({ provider: 'weixin', success: ({ userInfo }) => { resolve(userInfo); }, fail: e => { reject(e); } }); } else { // 需要重新授权 uni.authorize({ scope: 'scope.userInfo', success: () => { console.log('用户同意授权'); }, fail: () => { uni.showModal({ title: '提示', content: '您拒绝了授权,请打开设置页面手动开启权限。', success: modalRes => { if (modalRes.confirm) { uni.openSetting(); } } }); } }); } }, fail: e => { reject(e); } }); }); } ``` #### 2. 图片上传至后端服务器 当需要处理图片时,通常会先将图片从小程序端上传到开发者自己的后端服务器上,然后再由后端完成进一步的操作(如调用微信的安全检测接口)。具体实现如下所示[^1]: ```javascript uploadImageToServer(filePath) { return new Promise((resolve, reject) => { uni.uploadFile({ url: 'https://your-backend-server/upload', // 替换为您的后端地址 filePath, name: 'file', formData: {}, success: uploadRes => { const data = JSON.parse(uploadRes.data); // 假设后端返回的是JSON数据 resolve(data.fileUrl || null); // 返回存储成功的文件URL }, fail: err => { reject(err); } }); }); } ``` #### 3. 支付宝支付集成 对于支付宝支付功能,在前端部分主要是负责发起支付请求并将结果反馈给用户;而后端则需与支付宝官方服务对接以生成预订单号等内容[^3]。这里给出一个简化版的流程说明以及相应代码片段: ```javascript payWithAlipay(orderId){ let that=this; uni.request({ method:"POST", url:'http://example.com/createOrder',// 后台创建订单接口路径 header:{ 'content-type':'application/json' }, data:{order_id:orderId}, success(res){ var payParam=res.data.pay_param;//假设后台返回的数据结构如此 my.tradePay({ //my 是支付宝 mini program 的全局对象名 tradeNO : payParam.trade_no,//交易单号 success :(result)=>{ console.log("支付成功", result ); that.showToast("支付已完成"); }, fail:(err)=>{ console.error("支付失败:", err.message||err.errMsg); that.showToast(`支付遇到问题:${err.message}`); } }) }, error(err){ console.error("无法连接到服务器或者发生错误.", err); that.showToast("系统异常,请稍后再试!"); } }) } showToast(msg,duration=2000){ uni.showToast({ icon:'none', title:msg, duration }) } ``` #### 4. 使用高德地图插件查询地理位置和天气状况 如果项目中有涉及地理定位或气象预报的需求,则可借助第三方服务商比如高德所提供的开放平台资源来进行开发工作[^4]: ```javascript refreshData(){ this.getRegeo();// 地址反编码 this.getWeather();// 天气情况 async function getRegeo(){ try{ const locationResponse = await amapPlugin.getReGeoCode({ lat:this.latitude, lng:this.longitude }); this.addressDetail=`${locationResponse.regeocodeAddress.province}${locationResponse.regeocodeAddress.city}${locationResponse.regeocodeAddress.district}`; }catch(error){ console.warn("未能取得位置详情",error); } } async function getWeather(){ try{ const weatherResult =await amapPlugin.getWeather({ citycode:'101010100' //北京地区代号作为例子传入 }); this.currentTemperature=weatherResult.lives.temperature+"°C"; this.weatherCondition=weatherResult.lives.weather; }catch(ex){ console.error("加载天气状态失败",ex); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kingsaj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值