小程序获取定位完整的封装js(uniapp)
1.小程序获取定位,首先需要在微信公众平台,申请getLocation接口(开发管理->接口设置)
2.在manifest.json打开源码视图,增加代码
"mp-weixin": {
"appid": "appid","permission": {
"scope.userLocation": {
"desc": "获取您的地理位置"
},
},
"requiredPrivateInfos": ["chooseLocation","getLocation"],
},
3.在腾讯地图api中申请一个key,用于经纬度的逆转化(需要将腾讯地图的域名配置到微信公众平台request中)
4.封装获取定位js
let getLocation = function() {
return new Promise((reslove) => {
//获取设置
uni.getSetting({
success(res) {
if (res.authSetting["scope.userLocation"] || res.authSetting["scope.userLocation"] === undefined) {
//获取定位
uni.getLocation({
type: 'gcj02',
success(res) {
reslove(codeAroundCity(res.latitude, res.longitude))
},
fail(err) {
console.log(err);
}
})
} else {
uni.showModal({
title: '提示',
content: '为方便更好的服务您,需要获取您的位置信息!',
success(res) {
if (res.confirm) {
//打开设置
uni.openSetting({
success(dataAu) {
if (dataAu.authSetting['scope.userLocation'] === true) {
uni.getLocation({
type: 'gcj02',
success(res) {
reslove(codeAroundCity(res.latitude,res.longitude))
},
fail(err) {
console.log(err);
}
})
}
}
})
}
}
})
}
}
})
})
}
let codeAroundCity = function(lat, lng) {
let key = '腾讯地图申请的key'
return new Promise((reslove, reject) => {
uni.request({
url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${lat},${lng}`,
method: 'GET',
data: {
key,
},
success(res) {
let result = res.data.result.address_component //这边需要省,市,县,所以就拿这个信息,如果需要其他信息可以参照腾讯地图api
reslove(result)
}
})
})
}
export default getLocation
5.使用,引入getLocation方法
async onLoad(){
let res = await getLocation()//res就是获取到的信息
}
不足之处还请各位大佬指点!!!
设置
小程序获取定位完整的封装js(uniapp)的更多相关文章
- (八)微信小程序---获取定位信息chooseLocation
微信小程序---获取定位信息 chooseLocation wxml <view bindtap="getlocalPath">{{localPath}}</v ...
- [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息
因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...
- 微信小程序-获取当前城市位置及再次授权地理位置
微信小程序-获取当前城市位置 1. 获取当前地理位置,可通过wx.getLocation接口,返回经纬度.速度等信息; 注意---它的默认工作机制: 首次进入页面,调用该api,返回用户授权结果,并保 ...
- 基于小程序请求接口 wx.request 封装的类 axios 请求
基于小程序请求接口 wx.request 封装的类 axios 请求 Introduction wx.request 的配置.axios 的调用方式 源码戳我 feature 支持 wx.reques ...
- 微信小程序-获取经纬度
微信小程序-获取经纬度 最近公司新功能 要求在外的市场人员 发送位置信息回来. 用的还是微信小程序开发.... 微信小程序 提供一个接口 getLocation 这个接口反回来的位置 相对实际位置 相 ...
- 小程序获取微信用户的openid
小程序获取微信用户的openid //index.js //获取应用实例 const app = getApp() Page({ globalData: { appid: '11121221a89e0 ...
- 小程序基础知识点讲解-WXML + WXSS + JS,生命周期
小程序基础 小程序官方地址,小程序开发者工具,点击此处下载.在微信小程序中有一个配置文件project.config.json,此文件可以让开发者在不同设备中进行开发. 微信小程序共支持5种文件,wx ...
- 微信小程序 获取用户openid
1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...
- JavaScript和微信小程序获取IP地址的方法
最近公司新加了一个需求,根据用户登录的IP地址判断是否重复登录,重复登录就进行逼退,那么怎么获取到浏览器的IP地址呢?最后发现搜狐提供了一个JS接口,可以通过它获取到客户端的IP. 接口地址如下: h ...
- 微信小程序获取输入框(input)内容
微信小程序---获取输入框(input)内容 wxml <input placeholder="请输入手机号码" maxlength="11" type= ...
随机推荐
- Machine Learning Week_1 Model and Cost Function 5-8
目录 2.5 Video: Cost Function Intuition-1 unfamiliar words 2.6 Reading: Cost Function Intuition-1 unfa ...
- 出现负载均衡问题IP端口不通的紧急处理
出现负载均衡IP不能用的处理方案,重启这个服务. 命令: systemctl stop keepalived systemctl start keepalived
- manim边学边做--通用二维坐标系
Manim的Axes对象是通用的坐标系对象,之前几篇介绍的数轴和各种坐标平面都是继承Axes对象. Axes对象的主要作用在于创建和管理二维坐标轴,以满足我们制作数学动画时的各种需求. 具体来说,Ax ...
- Typora实现双击图片放大 Mac
前置条件 Typora LightBox: github下载 添加LightBox拓展 打开应用程序,找到typora,右键选择"显示包内容". 解压lightbox2代码,将di ...
- CodeForces - 1336A Linova and Kingdom
CodeForces - 1336A 就差一点点,很可惜,少发现个很显而易见的结论 就是一个点的价值,实际上就是(这个点的深度 - 之后的点的数目) 就是 \(depth_i - size_i\) 然 ...
- ETCD存储满了如何处理?
一.前言 当运行 ETCD 日志报 Erro: mvcc database space exceeded 时,或者查看健康状态显示 failed to commit proposal: Active ...
- Java并发显式锁和显式条件队列
一 显式锁 在类中利用synchronized修饰的方法或者this代码块,均使用的是类的实例锁或者类的锁.这些锁都称为内置锁. 可以利用显式锁进行协调对象的访问.即ReentrantLock.这是一 ...
- Java的内存管理1:“并不只有C++程序员关心内存回收”——Java的内存管理2:"不中用的finalize( )方法"
通常Java的缓存管理会由垃圾回收器(Java Garbage Collection)定时处理,无须程序员操心.但Java Garbage Collection仅有权回收那些非"强引用&qu ...
- vite 分包打包
1.概述 在使用vite打包的时候,一般情况会将依赖包和源码打包到一起,这样的问题是,一般情况依赖包一般情况是不变的,如果打包到一起,程序更新时,就会因为打包指纹发生变化而重新下载,如果进行分包,如果 ...
- fastadmin表格 - 自定义接口
1.文本过长溢出 文本超过250px则隐藏,如果需要修改此宽度,请在具体页面中重新定义formatter方法 点击通过弹窗展示完整的内容 弹窗插件使用Layer.js 调用方法 {field: 'co ...