get-location.md 2.3 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4
## uni.getLocation(options) @getlocation

<!-- UTSAPIJSON.getLocation.description -->

D
DCloud_LXH 已提交
5 6
<!-- UTSAPIJSON.getLocation.compatibility -->

D
DCloud_LXH 已提交
7 8 9 10 11 12
<!-- UTSAPIJSON.getLocation.param -->

<!-- UTSAPIJSON.getLocation.returnValue -->

### 注意

DCloud-yyl's avatar
DCloud-yyl 已提交
13
uni-app x的标准基座定位仅支持wgs84坐标系、不支持逆地址解析、且某些老型号国产Android机因gms问题不支持系统定位、国产Rom可能不支持高度信息。
D
DCloud_LXH 已提交
14 15 16 17 18 19 20 21 22

如需更强的定位能力,需加载专业定位sdk。

真机运行基座不包含三方定位sdk。

三方定位sdk方面,暂不支持高德、百度,但支持腾讯定位。

可下载[腾讯定位插件](https://ext.dcloud.net.cn/plugin?id=14569),在插件中配置key打包后生效。

23
上述腾讯定位插件属于[ext api插件](https://uniapp.dcloud.net.cn/api/extapi.html),引用到工程后,会覆盖uni.getLocation的实现,替换掉系统定位。
D
DCloud_LXH 已提交
24 25 26 27 28 29 30 31 32

如需其他定位,请在插件市场搜索定位相关的uts插件。

获取手机端app是否拥有定位权限,请使用API [uni.getAppAuthorizeSetting](get-app-authorize-setting.md)

不管系统定位、还是三方sdk定位,都有很多注意事项,包括gms、坐标系、隐私和权限等,请仔细阅读下面的参考链接。

<!-- UTSAPIJSON.getLocation.tutorial -->

D
DCloud_LXH 已提交
33
<!-- UTSAPIJSON.getLocation.example -->
D
DCloud_LXH 已提交
34 35 36 37

<!-- UTSAPIJSON.general_type.name -->

<!-- UTSAPIJSON.general_type.param -->
WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

## 自定义定位provider

以自定义腾讯定位为例

第一步,在interface.uts 中定义接口,继承UniLocationProvider,代码如下

```ts
export interface UniLocationTencentProvider extends UniLocationProvider{}
```

第二步,在app-android或者app-ios的index.uts中实现接口,代码如下

```ts
import { UniLocationTencentProvider } from '../interface';

export class UniLocationTencentProviderImpl implements UniLocationTencentProvider{


	override id : String = 'tencent'

	override description : String = "tencent"

	override isAppExist : boolean | null = null

	override getLocation(options : GetLocationOptions) {
		//todo 具体逻辑
	}

	constructor() {
	}

}
```

第三步,在manifest.json中配置

```ts
  "app": {
    "distribute": {
      /* android打包配置 */
      "modules": {
        "uni-getLocation":{
          "tencent":{}
        }
      }
    }
  }
```

第四步,打自定义基座