微信小程序 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 相关文章推荐
js 效率组装字符串 StringBuffer
Dec 23 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
Angular2入门--架构总览
Mar 29 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
微信小程序之裁剪图片成圆形的实现代码
Oct 11 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
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
php获取参数的几种方法总结
2014/02/18 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
JQuery在光标位置插入内容的实现代码
2010/06/18 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
纯js实现无缝滚动功能代码实例
2020/02/21 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python 自动重连wifi windows的方法
2018/12/18 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python3图片文件批量重命名处理
2019/10/31 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
外贸业务员求职自荐信分享
2013/09/21 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
小班上学期评语
2014/05/05 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
借条如何写
2015/05/26 职场文书
小学音乐课教学反思
2016/02/18 职场文书
小学教师教学反思
2016/02/24 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL