微信小程序 location API接口详解及实例代码


Posted in Javascript onOctober 12, 2016

 微信小程序 location API 接口:

现在微信小程序火了 ,利用假期时间学习了下,微信小程序的基础知识,嘿嘿!

以下是记录学习微信小程序 location API接口,并且写了一个小实例来记录,如有错误之处还请指正。

微信小程序的位置接口共有两个:

1、wx.getLocation(OBJECT)获取当前的地理位置、速度。
2、wx.openLocation(OBJECT) 使用微信内置地图查看位置

然后,根据object参数说明,结合module模块化重写了下两个接口在暴露出来引用,让项目更加灵活管理。具体代码如下:

location.js::

/** 
 * 获取当前的地理位置、速度。 
 * 1、fType:     默认为 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标   选填 
 * 2、cbSuccessFun: 接口调用成功的回调函数,返回内容详见返回参数说明。 必填 
 * 3、cbFailFun:  接口调用失败的回调函数 选填 
 * 4、cbCompleteFun:接口调用结束的回调函数(调用成功、失败都会执行) 选填 
 */ 
function getLocationFun(fType, cbSuccessFun, cbFailFun, cbCompleteFun){ 
  var getObj={}; 
  getObj.type="wgs84"; 
  if(fType){ 
    getObj.type=fType; 
  } 
  getObj.success=function(res){ 
    var _res=res; 
    if(cbSuccessFun){ 
      cbSuccessFun(_res); 
    } 
  } 
  getObj.fail=function(res){ 
    if(cbFailFun){ 
      cbFailFun(); 
    }else{ 
      console.log("getLocation fail:"+res.errMsg); 
    } 
  } 
  getObj.complete=function(res){ 
    if(cbCompleteFun){ 
      cbCompleteFun(); 
    } 
  } 
  wx.getLocation(getObj); 
} 
 
/** 
 * 使用微信内置地图查看位置 
 * 1、latitude:   纬度,范围为-90~90,负数表示南纬 必填 
 * 2、longitude:  经度,范围为-180~180,负数表示西经 必填 
 * 3、scale:    缩放比例,范围1~28,默认为28 选填 
 * 4、name:     位置名 选填 
 * 5、address:   地址的详细说明 选填 
 * 6、cbSuccessFun: 接口调用成功的回调函数 选填 
 * 7、cbFailFun:  接口调用失败的回调函数 选填 
 * 8、cbCompleteFun:接口调用结束的回调函数(调用成功、失败都会执行) 选填 
 */ 
function openLocationFun(latitude, longitude, scale, name, address, cbSuccessFun, cbFailFun, cbCompleteFun){ 
  var openObj={}; 
  openObj.latitude=latitude; 
  openObj.longitude=longitude; 
  openObj.scale=15; 
  if(scale>0 && scale<29){ 
    openObj.scale=scale; 
  } 
  if(name){ 
    openObj.name=name; 
  } 
  if(address){ 
    openObj.address=address; 
  } 
  openObj.success=function(res){ 
    if(cbSuccessFun){ 
      cbSuccessFun(); 
    } 
  } 
  openObj.fail=function(res){ 
    if(cbFailFun){ 
      cbFailFun(); 
    }else{ 
      console.log("openLocation fail:"+res.errMsg); 
    } 
  } 
  openObj.complete=function(res){ 
    if(cbCompleteFun){ 
      cbCompleteFun(); 
    } 
  } 
  wx.openLocation(openObj); 
} 
 
module.exports={ 
  getLocationFun: getLocationFun, 
  openLocationFun: openLocationFun 
}

demo.js::

var comm = require( "../../common/common.js" ); 
var location=require('../../common/location.js'); 
Page( { 
 data: { 
  uploadImgUrls: [], 
  title: "" 
 }, 
 getlocation: function( e ) { 
  location.getLocationFun( 
   'gcj02',  
   function(cb){ 
    console.log(cb); 
    var _latitude=cb.latitude; 
    var _longitude=cb.longitude; 
    location.openLocationFun( 
     _latitude, 
     _longitude, 
     null, 
     "厦门观音山", 
     "厦门观音山匹克大厦", 
     null, 
     null, 
     null 
    ) 
   } 
  ) 
 }, 
 onLoad: function( options ) { 
  var _title = "ddd"; 
  if( options.title ) { 
   _title = options.title; 
  } 
  this.setData( { 
   title: _title 
  }) 
  console.log("load") 
  console.log( comm.formatDateFun( new Date(), 1 ) ); 
 }, 
 onShow:function(e){ 
  console.log("show"); 
 }, 
 onHide: function(e){ 
  console.log("hide"); 
 }, 
 onUnload:function(e){ 
  console.log("unload"); 
 } 
 // onReady: function(){ 
 //  wx.setNavigationBarTitle({ 
 //   title: this.data.title 
 //  }); 
 // } 
})

经调试发现getLocation接口的type不管是传递wgs84还是gcj02返回的参数都是只有经纬度,并没有文档上提到的速度和位置的精确度两个参数

微信小程序 location API接口详解及实例代码

然后我在点击“去这里”页面跳转后,发现每次都是提示定位失败,不晓得是不是因为web开发工具的原因。而且好像经纬度有差距,和本人实际距离不一致。还有定义了name和address两个参数并没有发现有啥变化,最后比较严重的问题是我点击返回后提示page route错误,再次点击按钮,提示错误了,不能点击。不知道什么原因?要怎么解决!

微信小程序 location API接口详解及实例代码

目前针对这个接口学习到这里,后续有其他发现或者解决办法在来更新。

==============================================================================================

今天,微信发布新版本了【最新版本 0.10.101100】,对于位置接口也有进一步的更新,

1、打开地图接口在返回不会提示page route错误了

2、wx.openLocation接口传递自定义的name和address参数后,可以在地图描述框,显示出来了,不过经纬度依然不够准确。点击“去这里”依然是定位失败。 

微信小程序 location API接口详解及实例代码

感谢阅读,希望能帮助到大家,谢谢对本站的支持!

Javascript 相关文章推荐
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
浅谈JS原生Ajax,GET和POST
Jun 08 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
微信小程序 利用css实现遮罩效果实例详解
Jan 21 Javascript
Angular动态添加、删除输入框并计算值实例代码
Mar 29 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
npm 语义版本控制详解
Sep 10 Javascript
vue动态设置页面title的方法实例
Aug 23 Javascript
如何在 Vue 中使用 JSX
Feb 14 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
webpack+vue.js实现组件化详解
Oct 12 #Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 #Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 #Javascript
JS禁止查看网页源代码的实现方法
Oct 12 #Javascript
webpack+vue.js快速入门教程
Oct 12 #Javascript
jquery 抽奖小程序实现代码
Oct 12 #Javascript
微信js-sdk地理位置接口用法示例
Oct 12 #Javascript
You might like
NO3第三帝国留言簿制作过程
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
PHP抽象类 介绍
2012/06/13 PHP
php数组一对一替换实现代码
2012/08/31 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
PHP间隔一段时间执行代码的方法
2014/12/02 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
使用Python的内建模块collections的教程
2015/04/28 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
八年级生物教学反思
2014/01/22 职场文书
王老吉广告词
2014/03/20 职场文书
大学生演讲稿
2014/04/25 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书