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

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

W
wanganxp 已提交
5 6 7 8
::: warning 注意
Web平台本API调用了腾讯地图的gcj02坐标转换接口,该接口从2024年7月18日起开始陆续下线。[详见](https://ask.dcloud.net.cn/question/195113)
:::

D
DCloud_LXH 已提交
9 10
<!-- UTSAPIJSON.getLocation.compatibility -->

D
DCloud_LXH 已提交
11 12 13 14 15 16
<!-- UTSAPIJSON.getLocation.param -->

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

### 注意

W
wanganxp 已提交
17
uni-app x的App标准基座定位仅支持wgs84坐标系、不支持逆地址解析、且某些老型号国产Android机因gms问题不支持系统定位、国产Rom可能不支持高度信息。
D
DCloud_LXH 已提交
18 19 20 21 22 23 24 25 26

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

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

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

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

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

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

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

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

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

D
DCloud_LXH 已提交
37
<!-- UTSAPIJSON.getLocation.example -->
D
DCloud_LXH 已提交
38 39 40 41

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

<!-- UTSAPIJSON.general_type.param -->
WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
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 90 91 92 93

## 自定义定位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":{}
        }
      }
    }
  }
```

第四步,打自定义基座

WOSHIMAHAIFENG's avatar
WOSHIMAHAIFENG 已提交
94
[示例代码](https://gitcode.net/dcloud/uni-api/-/tree/master/uni_modules/uni-getLocation-tencent)