[微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息
因为需要在小程序加个定位并加载对应城市信息
然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利于用户体验
我就不多说什么了,直接上代码
微信小程序获取用户定位信息并加载对应城市信息 wx.getLocation 腾讯地图小程序api 微信小程序经纬度逆解析地理信息
1 //加载腾讯位置服务js文件(必须)
//预加载内容
onLoad: function () { //调用腾讯地图sdk 添加腾讯地图key var demo = new qqmap({
key: '*****-*****-*****-*****-SY7PH-SMFTK'
}); //此声明最好不要写在 wx.getLocation方法内,this指代不同 var that = this;
wx.getLocation({
type: 'gcj02', //编码方式,
success: function (res) {
var latitude = res.latitude // wx.getLocation 获取当前的地理位置、速度 latitude(维度) longitude(经度)
var longitude = res.longitude
demo.reverseGeocoder({
//腾讯地图api 逆解析方法 首先设计经纬度
location: {
latitude: res.latitude,
longitude: res.longitude
},
//逆解析成功回调函数
success: function (res) {
getApp().globalData.cityname = res.result.address_component.city; //全局变量存放城市 res.result.address_component.city 获取解析之后地址中的城市
console.log("onLoad"); //wx.request 发起网络请求,类似于ajax
wx.request({
url: 'https://www.xxxxxxxxxx.com/home/index/xcx_index', //填写对应服务器地址
data: {
// cityid: getApp().globalData.cityid, //我这里需要提交的参数,这里我是把获取的城市发给后台,然后后台给我对应城市的数据json文件
cityna: getApp().globalData.cityna,
district: res.result.address_component.city,
},
header: {
"Content-Type": "applicatiSon/x-www-form-urlencoded"
},
method: "POST",
success: function (res) {
console.log(res.data.data);
//解析回调函数得到的json文件并一层一层的解析然后数据绑定到页面上
that.setData({
// 轮播图图片
imgurls: res.data.data.pics });
getApp().globalData.cityid = res.data.data.datacompany.cityid;
// this.data.pic_array_dq2[e.detail.value].name
}
});
· // 成功后提醒
wx.showModal({
title: '定位成功',
content: '当前城市:' + getApp().globalData.cityname,
});
},
fail: function (res) {
//失败的回调函数
// console.log(res);
},
complete: function (res) {
//完成之后的回调函数,不管是否成功
console.log("逆解析状态码:"+res.status); //res.status 获取状态码,为0代表解析成功,但是我们要考虑失败的兼容,可能用户并不愿意同意获取地理位置,所以不为0 的时候也要加载内容给个默认地址
if (res.status!=0){
wx.request({
url: 'https://www.cyzs97.com/home/index/xcx_index',
data: {
// cityid: getApp().globalData.cityid,
cityna: getApp().globalData.cityna,
district:"",
},
header: {
"Content-Type": "applicatiSon/x-www-form-urlencoded"
},
method: "POST",
success: function (res) {
console.log(res.data.data);
that.setData({
// 轮播图图片
imgurls: res.data.data.pics, });
getApp().globalData.cityid = res.data.data.datacompany.cityid;
// this.data.pic_array_dq2[e.detail.value].name
}
});
//提示用户失败可开启定位服务
wx.showModal({
title: '定位失败',
content: '定位失败,未授权获取当前位置或服务错误' ,
});
}
console.log("定位获取的:" + getApp().globalData.cityname);
}
});
}
});
},
当然最重要的不能忘记,需要配置服务器,只需安全域名设置,需要在微信公众平台添加域名地址 https://apis.map.qq.com
[微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息的更多相关文章
- 微信小程序-form表单-获取用户输入文本框的值
微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder=" ...
- 微信小程序开发之 下拉刷新,上拉加载更多
本文记载了如何在微信小程序里面实现下拉刷新,上拉加载更多 先开看一下界面 大致如此的界面吧. 这个Demo使用了微信的几个Api和事件,我先列出来. 1.wx.request (获取远程服务器的数据, ...
- Java微信公众平台开发(十六)--微信网页授权(OAuth2.0授权)获取用户基本信息
转自:http://www.cuiyongzhi.com/post/78.html 好长时间没有写文章了,主要是最近的工作和生活上的事情比较多而且繁琐,其实到现在我依然还是感觉有些迷茫,最后还是决定静 ...
- PHP版微信第三方实现一键登录及获取用户信息的方法
本文实例讲述了PHP版微信第三方实现一键登录及获取用户信息的方法.分享给大家供大家参考,具体如下: 注意,要使用微信在第三方网页登录是需要“服务号”才可以哦,所以必须到官方申请. 一开始你需要进入微信 ...
- 在命令提示符下,运行Java程序时,提示"找不到或无法加载主类"
小白:在命令提示符下,运行Java程序时,提示"找不到或无法加载主类". 大神:运行Java程序的作用是让Java解释器装载,检验并运行字节码文件(.class).因此,在运行Ja ...
- 登陆获取shell时的配置文件加载过程
最近遇到一台ubuntu服务器登陆时默认语言环境变量变成posix问题, 导致中文显示乱码,影响程序的正常运行 # locale LANG= LANGUAGE= LC_CTYPE="POSI ...
- 微信小程序~App.js中获取用户信息
(1)代码:主要介绍下获取用户信息部分 onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] l ...
- 从微信小程序到鸿蒙js开发【13】——list加载更多&回到顶部
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 目录: 1.list加载更多 2.list回到顶部 3.<从微信小程序到鸿蒙js开发>系列文章合集 1.list加 ...
- uniapp 在h5和小程序上使用高德获取用户城市位置
开发文档 https://lbs.amap.com/api 错误状态 https://lbs.amap.com/api/webservice/guide/tools/info/ 虽然用的高德但是你还需 ...
随机推荐
- Android之系统Action大全
String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式.. “android.intent.action.ADD_SHORTCUT” String ALL_APPS_AC ...
- python实战——网络爬虫之request
Urllib库是python中的一个功能强大的,用于操做URL,并在做爬虫的时候经常要用到的库,在python2中,分为Urllib和Urllib2两个库,在python3之后就将两个库合并到Urll ...
- Sql Sever 2012数据库更名失败 error:5030
打开SQL Server 2012数据库时,对HzWind_2MW数据库名修改为HzWind_2MW_GEM,结果出现如图1所示: 图1 数据库更名时出现error:5030 数据库不能重名名5030 ...
- iOS 代码混淆的简单使用
1.工具下载 http://stevenygard.com/projects/class-dump/ 选择dmg安装包 2.打开终端输入:open/usr/local/bin 3. 4.修改权限在 ...
- eclispe中使用python库 pyswip 进行prolog编程
from pyswip import Prolog prolog = Prolog() prolog.assertz("father(michael,john)") prolog. ...
- 利用System.IO.Compression操作压缩文件
引用: using System.IO.Compression; using (FileStream zipToOpen = new FileStream(@"D:\json.zip&quo ...
- 虚拟网络编辑器的知识和出现的一些问题(没有VMnet0或VMnet8)
不多说,直接上干货! 安装好的虚拟机,没有VMnet0!!! 解决的办法: 就可以了. 那么,问题现在又来了? 但是,每次都要这样,以右键,管理员身份运行,再关闭之后,以普通双击方式,即又没有VMne ...
- [C语言]声明解析器cdecl修改版
一.写在前面 K&R曾经在书中承认,"C语言声明的语法有时会带来严重的问题.".由于历史原因(BCPL语言只有唯一一个类型——二进制字),C语言声明的语法在各种合理的组合下 ...
- Core中使用Hangfire
之前使用Quartz.Net,后来发现hangfire对Core的继承更加的好,而且自带管理后台,这就比前者好用太多了. 安装注册 安装 PM> Install-Package Hangfire ...
- rails 国际化、validate校验、flash提示
1.Rails的国际化 根据特定的locale信息,提取相应的内容 通过config/environment.rb,指定应用的转换文件 config.i18n.load_path +=Dir[Ra ...