小程序通过API获取位置信息 微信API 百度地图API

博客简介

本篇博客介绍如何调用微信API获取经纬度,如何调用百度地图API获取实物位置

  • 微信API获取经纬度信息
  • 百度地图API获取实物位置

微信小程序获取经纬度

微信提供了获取当前设备经纬度的API,我们可以方便的用调用API获取当地的经纬度坐标,找到微信官方文档获取API参数信息:

wx.getLocation(Object object)调用前需要 用户授权 scope.userLocation

  • 获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。开启高精度定位,接口耗时会增加,可指定 highAccuracyExpireTime 作为超时时间。

  • 参数信息
    在这里插入图片描述

  • 回调函数
    在这里插入图片描述

  • 示例代码

wx.getLocation({
 type: 'wgs84',
 success (res) {
   const latitude = res.latitude
   const longitude = res.longitude
   const speed = res.speed
   const accuracy = res.accuracy
 }
})
  • 实际调用:
    我们可以定义一个getLocation函数,在内部直接调用API即可,最后在onloadfunction中调用getLocation
Page({
  onLoad: function () {
    var that=this;
    //console.log("load");
    that.getLocation();
  },

  //获取坐标
  getLocation:function()
  {
    var that=this
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const latitude = res.latitude
        const longitude = res.longitude
        console.log("经纬度" + latitude + ":" + longitude);
      }
    })
  }

  })

注意:getLocation调用前需要 用户授权 scope.userLocation,也就是说我们还要在app.json中加上一行:

  "permission": {
    "scope.userLocation": {
      "desc": "小德气象将获取您的位置信息以展示当地天气"
    }
  },

百度地图获取实物位置

微信API定位目前仅支持 gcj02 坐标,如果想要获取当前的实物位置,比如说小区,门牌号等等,还使用第三方服务进行逆地址解析时,在这里我们选用百度地图,获取方法如下:

  • 注册百度地图开发者账号
  • 创建一个应用
  • 找到Geocoder逆地理编码服务
  • 代码调用

(1)创建百度地图开发者账号

获取账号和创建QQ号一样简单,这里是官方地址http://lbsyun.baidu.com/

在这里插入图片描述

(2)创建一个应用

在获取开发者账号后需要用到百度地图的服务,因此我们需要先创建一个应用:

  • 找到应用管理
  • 应用名称,应用类型
  • 创建微信小程序的时候回有一个APP ID我们从微信官方的开发设置中获取APP ID然后将APP ID填入文本框
  • 创建成功后会有一个应用的访问AK,这个AK将在调用API的时候作为必填参数
    在这里插入图片描述
    在这里插入图片描述
    (3)我们找到服务文档中的Web服务API,从中找到逆地理编码服务
  • 开发文档
  • 服务接口
  • Web服务API
  • 正逆地理编码
  • 全球逆地理编码
  • 找到接口url
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(4)发送request请求来调用API,获取位置信息

  • 在微信的开发设置中的request请求中填入API的域名
  • 通过发送request请求来调用API,获取位置信息
    在这里插入图片描述
    设置request请求来获取位置信息,我们可以设置一个getCity函数获取城市位置信息:
getCity: function (latitude, longitude)
  {
    var that=this
    var url= "https://api.map.baidu.com/reverse_geocoding/v3/";
    var struct={
      location: latitude+ "," +longitude,
      ak: "amH0AbevGXZMHeGGIWgEPeVcmiVhGz9k",
        output:"json"
    }
    wx.request({
      url: url,
      data: struct,
      success: function(res) {
        console.log(JSON.stringify(res));
        var city = res.data.result.addressComponent.city;//获取城市信息
        that.setData({
          city:city,
        })
        //获取天气
        that.getWeather(city);
      },
      fail: function(res) {},
      complete: function(res) {},
    })
  },

这样我们就能顺利根据经纬度信息来获取实物地址了:
在这里插入图片描述

将json代码格式化

将Jason转化可以下载JsonView转化工具或者直接在网页上转化,地址为JsonView
这样我们填入json代码就能格式化了:
在这里插入图片描述

发布了134 篇原创文章 · 获赞 201 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/104185858