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

微信小程序 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返回的参数都是只有经纬度,并没有文档上提到的速度和位置的精确度两个参数

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

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

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

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

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

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

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

(0)

相关推荐

  • 微信小程序通过api接口将json数据展现到小程序示例

    实现知乎客户端的一个重要知识前提就是,要知道怎么通过知乎新闻的接口,来把数据展示到微信小程序端上. 那么我们这一就先学习一下,如何将接口获取到的数据展示到微信小程序上. 1.用到的知识点 <1> wx.request 请求接口资源(微信小程序api中的发起请求部分) <2>swiper 实现轮播图的组件 <3>wx:for 循环语句 <4>微信小程序的基础知识 2.实现原理 首先,先看一下这个请求函数 wx.request({ url: '******',

  • 微信小程序 wx.request(接口调用方式)详解及实例

    微信小程序 wx.request----接口调用方式 最近开发了一个微信小程序版的任务管理系统,在向Java后台发送接口时遇到了一些问题,在这里做一个简单的总结. 官方接口 官方给出的接口叫做wx.request,请求方式比较简单,下面是官网给出的请求实例. wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content-type': 'application/json' },

  • 微信小程序访问node.js接口服务器搭建教程

    前言 最近在做微信的应用号小程序开发,小程序的后台数据接口需要https安全请求,所以需要我的nodejs服务器能够提供https的支持,现在就将整个https服务器的搭建过程说一下. 搭建教程如下: 首先,我试了一下以前的过期的证书,在开发者工具里模拟的时候可以正常访问接口,在手机里测试时候微信小程序的wx.request是会报SSL握手失败的错误(request error : request: fail ssl hand shake error),所以只能重新申请一个证书,这里推荐使用阿里

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

    微信小程序 location API 接口: 现在微信小程序火了 ,利用假期时间学习了下,微信小程序的基础知识,嘿嘿! 以下是记录学习微信小程序 location API接口,并且写了一个小实例来记录,如有错误之处还请指正. 微信小程序的位置接口共有两个: 1.wx.getLocation(OBJECT)获取当前的地理位置.速度. 2.wx.openLocation(OBJECT) 使用微信内置地图查看位置 然后,根据object参数说明,结合module模块化重写了下两个接口在暴露出来引用,让

  • 微信小程序 MD5的方法详解及实例代码

    微信小程序 MD5的方法详解 生成的文件可以放在  utils文件中哦!!! /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 1.1 Copyright (C) Paul Johnston 1999 - 2002. * Code also contributed by Greg Holt

  • 微信小程序 http请求封装详解及实例代码

    微信小程序  http请求封装 示例代码 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, method:'POST', header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) }, fail: function( res ) { fail( res ); } }) 以上

  • 微信小程序  http请求封装详解及实例代码

    微信小程序  http请求封装 示例代码 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, method:'POST', header: { 'content-type': 'application/json' }, success: function(res) { console.log(res.data) }, fail: function( res ) { fail( res ); } }) 以上

  • 微信小程序日历组件calendar详解及实例

    微信小程序日历组件calendar详解及实例 模版使用: src="../cal/calendar.wxml"> is="calendar" data="{{selected_value,days,month,years,lunar_years,lunar_month,lunar_days,selectDateType,l unar_selected_value}}"> JS代码使用: var Calendar = require('

  • 微信小程序 常用工具类详解及实例

    微信小程序 常用工具类详解 前言: 做微信小程序当中,会遇到好多的工具类util.js,这里记载下来以便平常使用 (Ps:建议通过目录查看) -获取日期(格式化) function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinut

  • 微信小程序 网络API Websocket详解

    微信小程序 网络API: 微信小程序 网络API发起请求 微信小程序 网络API 上传.下载 微信小程序 网络API Websocket wx.connectSocket(OBJECT) ​ 创建一个 WebSocket 连接:一个微信小程序同时只能有一个WebSocket连接,如果当前已存在一个WebSocket连接,会自动关闭该连接,并重新创建一个WebSocket连接. OBJECT参数说明: 参数 类型 必填 说明 url String 是 开发者服务器接口地址,必须是HTTPS协议,且

  • 微信 小程序前端源码详解及实例分析

    微信小程序前端源码逻辑和工作流 看完微信小程序的前端代码真的让我热血沸腾啊,代码逻辑和设计一目了然,没有多余的东西,真的是大道至简. 废话不多说,直接分析前端代码.个人观点,难免有疏漏,仅供参考. 文件基本结构: 先看入口app.js,app(obj)注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等.其他文件可以通过全局方法getApp()获取app实例,进而直接调用它的属性或方法,例如(getApp().globalData) //app.js App({ onLau

  • 微信小程序 audio音频播放详解及实例

     微信小程序 audio音频播放 audio audio为音频组件,我们可以轻松的在小程序中播放音频. 属性名 类型 默认值 说明 id String   video 组件的唯一标识符, src String   要播放音频的资源地址 loop Boolean false 是否循环播放 controls Boolean true 是否显示默认控件 poster String   默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效 name

  • 微信小程序  audio音频播放详解及实例

     微信小程序 audio音频播放 audio audio为音频组件,我们可以轻松的在小程序中播放音频. 属性名 类型 默认值 说明 id String   video 组件的唯一标识符, src String   要播放音频的资源地址 loop Boolean false 是否循环播放 controls Boolean true 是否显示默认控件 poster String   默认控件上的音频封面的图片资源地址,如果 controls 属性值为 false 则设置 poster 无效 name

随机推荐