Skip to content

qin.getLocation(OBJECT) ​

获取当前的地理位置、速度。

OBJECT 参数说明

参数名类型必填说明平台差异说明
typeString否默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 qin.openLocation 和 map 组件坐标,H5 需配置定位 SDK 信息才可支持 gcj02 。
altitudeBoolean否传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度抖音小程序、飞书小程序、支付宝小程序不支持
highAccuracyExpireTimeNumber否高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果H5 、微信小程序 (基础库 2.9.0+)
timeoutString否默认为 5 ,定位超时时间,单位秒仅飞书小程序支持
cacheTimeoutNumber否定位缓存超时时间,单位秒;每次定位缓存当前定位数据,并记下时间戳,当下次调用在 cacheTimeout 之内时,返回缓存数据仅飞书小程序、支付宝小程序支持
accuracyString否默认为 high ,指定期望精度,支持 high , best 。当指定 high 时,期望精度值为100m,当指定 best 时期望精度值为 20m 。当定位得到的精度不符合条件时,在 timeout 之前会继续定位,尝试拿到符合要求的定位结果仅飞书小程序支持
isHighAccuracyBoolean否开启高精度定位H5 、微信小程序 (基础库 2.9.0+)
successFunction是接口调用成功的回调函数,返回内容详见返回参数说明。
failFunction否接口调用失败的回调函数
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行) 

success 返回参数说明

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

address 地址信息说明

属性类型描述说明
countryString国家如“中国”,如果无法获取此信息则返回undefined
provinceString省份名称如“北京市”,如果无法获取此信息则返回undefined
cityString城市名称如“北京市”,如果无法获取此信息则返回undefined
districtString区(县)名称如“朝阳区”,如果无法获取此信息则返回undefined
streetString街道信息如“酒仙桥路”,如果无法获取此信息则返回undefined
streetNumString获取街道门牌号信息如“3号”,如果无法获取此信息则返回undefined
poiNameStringPOI信息如“电子城.国际电子总部”,如果无法获取此信息则返回undefined
postalCodeString邮政编码如“100016”,如果无法获取此信息则返回undefined
cityCodeString城市代码如“010”,如果无法获取此信息则返回undefined

示例

js
qin.getLocation({
  type: 'wgs84',
  success: (theRes) => {
    console.log('当前位置的经度:' + theRes.longitude);
    console.log('当前位置的纬度:' + theRes.latitude);
  },
});
qin.getLocation({
  type: 'wgs84',
  success: (theRes) => {
    console.log('当前位置的经度:' + theRes.longitude);
    console.log('当前位置的纬度:' + theRes.latitude);
  },
});

注意事项

  • H5 平台
    • 在较新的浏览器上,H5 端获取定位信息,要求部署在 https 服务上,本地预览 (localhost) 仍然可以使用 http 协议。
    • 国产安卓手机上,H5若无法定位,检查手机是否开通位置服务、 GPS , ROM 是否给该浏览器位置权限、浏览器是否对网页弹出请求给予定位的询问框。
    • 安卓手机 在原生 App 内嵌 H5 时,无法定位需要原生 App 处理 Webview 。
    • 移动端浏览器 普遍仅支持 GPS 定位,在 GPS 信号弱的地方可能定位失败。
    • PC 设备 使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
    • 微信公众号可使用微信 js sdk ,详见
    • 优化 qin.getLocation 支持通过 IP 定位。默认通过 GPS 获取,如果获取失败,备选方案是通过 IP 定位获取,需填写三方地图服务平台的秘钥( key )。 key 配置:manifest.json ---> H5配置 ---> 定位和地图 ---> key。
  • 小程序平台
    • api 默认不返回详细地址中文描述。需要中文地址方式: 使用高德地图小程序sdk,在app和微信上都可以获得中文地址,参考。
    • 可以通过用户授权 API 来判断用户是否给应用授予定位权限,详见
    • 在 微信小程序 中,当用户离开应用后,此接口无法调用,需要申请 后台持续定位权限 ,另外新版本中需要使用 wx.onLocationChange 监听位置信息变化;当用户点击“显示在聊天顶部”时,此接口可继续调用。

qin.chooseLocation(OBJECT) ​

打开地图选择位置。

平台差异说明

H5微信小程序小红书小程序抖音小程序快手小程序
√√√√x

OBJECT 参数说明

参数名类型必填说明平台差异说明
latitudeNumber否目标地纬度微信小程序(2.9.0+)、H5-Vue3(3.2.10+)
longitudeNumber否目标地经度微信小程序(2.9.0+)、H5-Vue3(3.2.10+)
successFunction是接口调用成功的回调函数,返回内容详见返回参数说明。
failFunction否接口调用失败的回调函数(获取定位失败、用户取消等情况下触发)
completeFunction否接口调用结束的回调函数(调用成功、失败都会执行)

注意

因平台差异,如果 SDK 配置百度地图,需要设置 keyword,才能显示相关地点

success 返回参数说明

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

示例

js
qin.chooseLocation({
  success: (theRes) => {
    console.log('位置名称:' + theRes.name);
    console.log('详细地址:' + theRes.address);
    console.log('纬度:' + theRes.latitude);
    console.log('经度:' + theRes.longitude);
  }
});
qin.chooseLocation({
  success: (theRes) => {
    console.log('位置名称:' + theRes.name);
    console.log('详细地址:' + theRes.address);
    console.log('纬度:' + theRes.latitude);
    console.log('经度:' + theRes.longitude);
  }
});

注意

  • 不同端,使用地图选择时基于的底层地图引擎不一样,详见地图 map 组件的地图服务商支持。
  • H5 端 使用地图和定位相关,需要在 manifest.json 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
  • 微信内置浏览器 中可使用微信js sdk,详见
  • chooseLocation 属于封装型API,开发者若觉得不够灵活,可自行基于原始的 map 组件进行封装。插件市场已经有各种封装样例了。

三方定位和地图服务收费说明 ​

使用三方定位或者地图服务,需向服务提供商(如:高德地图、百度地图、腾讯地图、谷歌地图)申请商业授权和缴纳费用(5万/年)。

unicloud-city-select 城市选择组件 ​

若想要实现城市选择功能,可以使用 unicloud-city-select 城市选择组件。

运行效果图

下载地址:https://ext.dcloud.net.cn/plugin?name=unicloud-city-select

文档地址:https://uniapp.dcloud.net.cn/uniCloud/unicloud-city-select.html