App端定位模块封装系统自带的系统定位,及市场上主流的三方定位SDK,如高德定位百度定位等,提供JS API统一调用定位功能。

项目类型 API
uni-app uni.getLocation(OBJECT)
5+ App/Wap2App plus.geolocation.*

使用定位功能需在项目manifest.json的“App模块配置”中勾选“Geolocation(定位)”,并根据项目实际需求勾选使用的三方定位SDK:

# 系统定位

HBuilderX3.2.16开始独立出“系统定位”模块

使用系统定位需在“App模块配置”项的“Geolocation(定位)”下,勾选“系统定位”:

系统定位调用设备的操作系统提供的定位服务,只支持wgs84坐标系,不同设备对定位功能支持的情况有所差异。

# iOS平台

由苹果iOS系统提供定位服务,可以获取经纬度信息,支持解析地址信息,即可以直接返回城市街道信息。

# Android平台

只可以获取经纬度信息,不支持解析地址信息,即无法返回城市街道信息。

标准Android系统的定位服务是Google提供的,但需要手机内置GMS服务,连接Google服务器。
国内主流手机厂商均自行提供了定位服务,但小众品牌可能不支持,主流品牌中较老的机型也不支持。如下Android手机厂商都支持系统定位

  • 华为
  • 小米
  • Oppo
  • Vivo
  • 努比亚
  • 一加
  • 魅族
  • 联想
  • 金立

在国外通常都是使用Google的GMS提供定位服务。

注意

# 高德定位

需要向高德申请商业授权,参考:商业授权相关说明,使用前需登录 高德开放平台 创建应用申请Key

使用高德定位需在“App模块配置”项的“Geolocation(定位)”下,勾选“高德定位”:

# 参数说明

注意

# 百度定位

需要向百度申请商业授权,参考:商业授权相关说明,使用前需登录 百度地图开放平台 创建应用申请访问应用密钥(AK)

使用高德定位需在“App模块配置”项的“Geolocation(定位)”下,勾选“高德定位”:

# 参数说明

注意
-调用百度定位SDK提供的定位服务,仅支持gcj02/bd09/bd09ll坐标系,支持解析地址信息。

# 商业授权相关说明

从2021年初开始,高德、百度、腾讯等地图服务商更新了服务协议、开始实施商业授权机制,要求除公益App外所有使用地图相关功能(包括定位SDK、地图SDK、H5地图等)都需要获取地图服务商的商业授权。重点强调一下,免费应用同样需要商业授权,除非你的应用是公益类App,其它类型App都需要商业授权。

没有取得地图服务商授权的App可能会遇到定位或地图功能被停用、上架应用市场可能提示存在侵权的问题,因此需要向高德、百度等地图开放平台申请商业授权。

为了避免商业授权引起的问题,如仅需获取wgs84坐标的情况下也可以只使用“系统定位”模块,“系统定位”在功能和机型适配上没有高德、百度等商业定位服务完善,需开发者根据实际情况选择。