微信小程序 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代码
Feb 11 Javascript
web页面数据展示新想法(json)
Jun 08 Javascript
ie支持function.bind()方法实现代码
Dec 27 Javascript
P3P Header解决Cookie跨域的问题
Mar 12 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 Javascript
20条学习javascript的编程规范的建议
Nov 28 Javascript
JScript中的条件注释详解
Apr 24 Javascript
bootstrap下拉列表与输入框组结合的样式调整
Oct 08 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
刷新页面后让控制台的js代码继续执行
Sep 20 Javascript
Node.js中出现未捕获异常的处理方法
Jun 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+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
php use和include区别总结
2019/10/13 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
node.js中的buffer.toString方法使用说明
2014/12/14 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
Python生成随机MAC地址
2015/03/10 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
学生会竞选自荐信
2013/10/12 职场文书
《盲人摸象》教学反思
2014/02/16 职场文书
2014年教师节寄语
2014/08/11 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
大一学生个人总结
2015/02/15 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android