微信小程序API—获取定位的详解


Posted in Javascript onApril 30, 2019

在微信小程序中,我们可以很方便的通过API接口来获取我们当前的位置,接下来我讲告诉大家微信获取定位的API—wx.getLocation的用法,以及我们通过获取定位,得到当地的位置,天气等信息。

<view class='content'>
 <view class='today'>
  <view class='info'>
   <view class='temp'>{{weather.temperature.data}}℃</view>
   <view class='weather'>{{weather.weather.data}} {{weather.winddirection.data}} {{weather.windpower.data}}</view>
   <view>友情提示:今天天气不错,是风和日丽的,适合出去玩</view>
   <view class='city'>{{weather.city.data}}</view>
  </view>
 </view>
</view>

首先给出我的前端代码,中括号内的变量就是我们下文中从高德地图返回给我们的json数组中解析出来的。下面让我们来看一下我们如何获得当前的定位以及获取高德地图给我们的信息。

//获取当前位置的经纬度
 loadInfo: function(){
  var that=this;
  wx.getLocation({
   type: 'gcj02', //返回可以用于wx.openLocation的经纬度
   success: function (res) {
    var latitude = res.latitude//维度
    var longitude = res.longitude//经度
    console.log(res);
    that.loadCity(latitude,longitude);
   }
  })
 },

微信小程序API—获取定位的详解

其实获取定位很简单,我们直接调用微信的接口wx.getLocation,结果会返回给我们一个json数组,结果就像上图一样,数组中包含各种属性,我们最需要的就是经度(longitude)和纬度(latitude),我们获得了当前位置的经纬度就可以调用高德地图的API,把我们的经纬度传上去,之后就能够获得高德地图给我们返回的信息。

首先我们需要从高德地图的官网上下载一个微信小程序SDK
http://lbs.amap.com/api/wx/download
在创建的项目中,新建一个名为 libs 目录,将 amap-wx.js (amap-wx.js 从下载的 zip 文件解压后得到)文件拷贝到 libs 的本地目录下,如下图所示。

 微信小程序API—获取定位的详解

接下来我们需要在页面的js文件中配置我们需要操作的数据

var amapFile = require('../../libs/amap-wx.js');
var markersData = {
 latitude: '',//纬度
 longitude: '',//经度
 key: "需要去高德地图注册成为开发者,然后就会获得一个key"//申请的高德地图key
};

好了,我们配置好外部文件以后,就可以在js里面写逻辑了,下面贴出我的js代码。

var amapFile = require('../../libs/amap-wx.js');
var markersData = {
 latitude: '',//纬度
 longitude: '',//经度
 key: "高德地图key"//申请的高德地图key
};
Page({

 /**
  * 页面的初始数据
  */
 data: {
  weather:[],
 },

 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  this.loadInfo();
 },


 //获取当前位置的经纬度
 loadInfo: function(){
  var that=this;
  wx.getLocation({
   type: 'gcj02', //返回可以用于wx.openLocation的经纬度
   success: function (res) {
    var latitude = res.latitude//维度
    var longitude = res.longitude//经度
    console.log(res);
    that.loadCity(latitude,longitude);
   }
  })
 },

 //把当前位置的经纬度传给高德地图,调用高德API获取当前地理位置,天气情况等信息
 loadCity: function (latitude, longitude){
  var that=this;
  var myAmapFun = new amapFile.AMapWX({ key: markersData.key });
  myAmapFun.getRegeo({
   location: '' + longitude + ',' + latitude + '',//location的格式为'经度,纬度'
   success: function (data) {
    console.log(data);
   },
   fail: function (info) { }
  });

  myAmapFun.getWeather({
   success: function (data) {
    that.setData({
     weather: data
    })
    console.log(data);
    //成功回调
   },
   fail: function (info) {
    //失败回调
    console.log(info)
   }
  })
 },


})

我们在onload函数中获取当前的定位,我们把经纬度信息传递给myAmapFun.getRegeo方法中的location参数,接下来我们可以看看高德地图给我们返回的信息。

微信小程序API—获取定位的详解

我们获取了我们的位置以及邮政编码等一系列信息,大家可以去高德地图上注册一个开发者,得到一个key,然后测试一下,也可以获得你们当地的信息。

我们再看一下myAmapFun.getWeather给我们返回的天气信息。

微信小程序API—获取定位的详解

我们顺利得到了我们当地的天气信息,然后再把这些信息显示在我们的wxml界面就行了,大家注意一下图片中的属性,然后再看一下wxml中括号内的变量,就可以知道讲json数组的某些属性的值如何传到前端了。有一个细节就是我把myAmapFun.getWeather方法返回的data数组传给了我在全局data中定义的weather数组,这样我们在前端就可以通过上文wxml中的方法来显示数组中的值。

微信小程序API—获取定位的详解

文章的末尾还是要强调一下,本次测试需要开发者自己去高德地图官网注册开发者账号,然后获取自己的key,并且需要下载高德地图提供给我们的微信小程序SDK,接着在项目中配置解压后的js文件,最后我们就可以像上文那样去使用高德地图的接口了。

以上所述是小编给大家介绍的微信小程序API获取定位详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
var与Javascript变量隐式声明
Sep 17 Javascript
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 Javascript
JavaScript实现的圆形浮动标签云效果实例
Aug 06 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
vue router返回到指定的路由的场景分析
Nov 10 Javascript
基于JS开发微信网页录音功能的实例代码
Apr 30 #Javascript
vue前端框架—Mint UI详解(更适用于移动端)
Apr 30 #Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 #Javascript
详解微信小程序用定时器实现倒计时效果
Apr 30 #Javascript
TypeScript开发Node.js程序的方法
Apr 30 #Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
Apr 30 #Javascript
Javascript读取上传文件内容/类型/字节数
Apr 30 #Javascript
You might like
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
React中的render何时执行过程
2018/04/13 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
《会变的花树叶》教学反思
2014/02/10 职场文书
司机职责范本
2014/03/08 职场文书
读群众路线的心得体会
2014/09/03 职场文书
小学校长个人总结
2015/03/03 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
数学备课组工作总结
2015/08/12 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang