微信小程序:获取地理位置

一、wx.getLocation(OBJECT)

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

属性 类型 默认值 必填 说明
type string wgs84 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标
altitude string false 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度
isHighAccuracy boolean false 开启高精度定位
highAccuracyExpireTime number 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

wx.getLocation({
    type: "wgs84",
    success (res) {
        console.log(res)
    }
})
image

等等,好像不是我想要的效果;
这是因为开发者需要获取用户地理位置,所以呢就要告诉用户我们拿地理位置做什么,就是一个用途说明。
那我们按照要求,在app.json里声明permission字段。

"permission": {
    "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
    }
}

image

这样就ok了,点击确定就可以拿到我们想要的数据了:
image

参数说明:

  • latitude:纬度,范围为 -90~90,负数表示南纬
  • longitude:经度,范围为 -180~180,负数表示西经
  • speed:速度,单位m/s accuracy:位置的精确度 altitude:高度,单位m
  • verticalAccuracy:垂直精度,单位m(Android无法获取,返回 0)
  • horizontalAccuracy:水平精度,单位m

二、wx.chooseLocation(Object object)

打开地图选择位置。

属性 类型 必填 说明
latitude number 目标地纬度
longitude number 目标地经度
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

这里我们要先使用wx.getLocation获取到经度、纬度,然后给wx.chooseLocation使用就可以了,下面看代码:

wx.getLocation({
    type: "wgs84",
    success(res) {
        wx.chooseLocation({
            latitude: res.latitude,
            longitude: res.longitude,
            success: function(data){
                console.log(data)
            }
        })
    }
})

image

当我们选中某一个地址,点击确定时,就会返回当前地址的信息:
image

参数说明:

  • name:位置名称
  • address:详细地址
  • latitude:纬度,浮点数,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系
  • longitude:经度,浮点数,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系

三、wx.openLocation(Object object)

使用微信内置地图查看位置

属性 类型 必填 说明
latitude number 纬度,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系
longitude number 经度,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系
scale number 缩放比例,范围5~18
name string 位置名
address string 地址的详细说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)
wx.openLocation({
    latitude: 30.64242,
    longitude: 104.04311,
    name: "武侯区人民政府(武侯祠大街南)",
    address: "四川省成都市武侯区武侯祠大街264号"
})
image

另外,当我们点击右下角绿色按钮(到这去)时,它会自动调用本地地图,可以直接导航,相当方便。


image

合理利用可以有很好的效果,比如我们把公司地址放在这里,客户就可以很方便的找到公司位置。

你可能感兴趣的:(微信小程序:获取地理位置)