Appearance
qin.getLocation(OBJECT)
获取当前的地理位置、速度。
OBJECT 参数说明
| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
|---|---|---|---|---|
| type | String | 否 | 默认为 wgs84 返回 gps 坐标,gcj02 返回国测局坐标,可用于 qin.openLocation 和 map 组件坐标,H5 需配置定位 SDK 信息才可支持 gcj02 。 | |
| altitude | Boolean | 否 | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 | 抖音小程序、飞书小程序、支付宝小程序不支持 |
| highAccuracyExpireTime | Number | 否 | 高精度定位超时时间(ms),指定时间内返回最高精度,该值3000ms以上高精度定位才有效果 | H5 、微信小程序 (基础库 2.9.0+) |
| timeout | String | 否 | 默认为 5 ,定位超时时间,单位秒 | 仅飞书小程序支持 |
| cacheTimeout | Number | 否 | 定位缓存超时时间,单位秒;每次定位缓存当前定位数据,并记下时间戳,当下次调用在 cacheTimeout 之内时,返回缓存数据 | 仅飞书小程序、支付宝小程序支持 |
| accuracy | String | 否 | 默认为 high ,指定期望精度,支持 high , best 。当指定 high 时,期望精度值为100m,当指定 best 时期望精度值为 20m 。当定位得到的精度不符合条件时,在 timeout 之前会继续定位,尝试拿到符合要求的定位结果 | 仅飞书小程序支持 |
| isHighAccuracy | Boolean | 否 | 开启高精度定位 | H5 、微信小程序 (基础库 2.9.0+) |
| success | Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明。 | |
| fail | Function | 否 | 接口调用失败的回调函数 | |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数说明
| 参数 | 说明 |
|---|---|
| latitude | 纬度,浮点数,范围为 -90~90 ,负数表示南纬 |
| longitude | 经度,浮点数,范围为 -180~180 ,负数表示西经 |
| speed | 速度,浮点数,单位 m/s |
| accuracy | 位置的精确度 |
| altitude | 高度,单位 m |
| verticalAccuracy | 垂直精度,单位 m( Android 无法获取,返回 0) |
| horizontalAccuracy | 水平精度,单位 m |
address 地址信息说明
| 属性 | 类型 | 描述 | 说明 |
|---|---|---|---|
| country | String | 国家 | 如“中国”,如果无法获取此信息则返回undefined |
| province | String | 省份名称 | 如“北京市”,如果无法获取此信息则返回undefined |
| city | String | 城市名称 | 如“北京市”,如果无法获取此信息则返回undefined |
| district | String | 区(县)名称 | 如“朝阳区”,如果无法获取此信息则返回undefined |
| street | String | 街道信息 | 如“酒仙桥路”,如果无法获取此信息则返回undefined |
| streetNum | String | 获取街道门牌号信息 | 如“3号”,如果无法获取此信息则返回undefined |
| poiName | String | POI信息 | 如“电子城.国际电子总部”,如果无法获取此信息则返回undefined |
| postalCode | String | 邮政编码 | 如“100016”,如果无法获取此信息则返回undefined |
| cityCode | String | 城市代码 | 如“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 参数说明
| 参数名 | 类型 | 必填 | 说明 | 平台差异说明 |
|---|---|---|---|---|
| latitude | Number | 否 | 目标地纬度 | 微信小程序(2.9.0+)、H5-Vue3(3.2.10+) |
| longitude | Number | 否 | 目标地经度 | 微信小程序(2.9.0+)、H5-Vue3(3.2.10+) |
| success | Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明。 | |
| fail | Function | 否 | 接口调用失败的回调函数(获取定位失败、用户取消等情况下触发) | |
| complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
注意
因平台差异,如果 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