Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
648cf336
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
648cf336
编写于
11月 02, 2021
作者:
D
DCloud_LXH
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: getLocation
上级
b6ae2365
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
23 deletion
+28
-23
docs/api/location/location.md
docs/api/location/location.md
+28
-23
未找到文件。
docs/api/location/location.md
浏览文件 @
648cf336
...
...
@@ -57,22 +57,25 @@ uni.getLocation({
#### 注意
-
H5:在较新的浏览器上,H5 端获取定位信息,要求部署在
**https**
服务上,本地预览(localhost)仍然可以使用 http 协议。
-
H5:国产安卓手机上,H5若无法定位,检查手机是否开通位置服务、GPS,ROM是否给该浏览器位置权限、浏览器是否对网页弹出请求给予定位的询问框。
-
H5:安卓手机在原生App内嵌H5时,无法定位需要原生App处理Webview。
-
H5:移动端浏览器普遍仅支持GPS定位,在GPS信号弱的地方可能定位失败。
-
H5:PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
-
H5:使用地图和定位相关需要在
[
腾讯地图开放平台
](
https://lbs.qq.com/dev/console/key/manage
)
申请密钥,填写在
[
manifest.json
](
https://uniapp.dcloud.io/collocation/manifest?id=h5sdkconfig
)
中。
-
H5:微信公众号可使用微信js sdk,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
H5:2.9.9 版本以上,优化 uni.getLocation 支持通过 IP 定位。默认通过 GPS 获取,如果获取失败,备选方案是通过 IP 定位获取,需填写地图服务平台的秘钥(key)。key配置:manifest.json ---> H5配置 ---> 定位和地图 ---> key。
-
App:Android由于谷歌服务被墙,或者手机上没有GMS,想正常定位就需要向高德等三方服务商申请SDK资质,获取AppKey。否则打包后定位就会不准。云打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南,详见:
[
https://ask.dcloud.net.cn/article/29
](
https://ask.dcloud.net.cn/article/29
)
。离线打包自行在原生工程中配置。注意包名、appkey、证书信息必须匹配。真机运行可以正常定位,是因为真机运行基座使用了DCloud向高德申请的sdk配置,打包后必须由开发者自己申请。如果手机自带GMS且网络环境可以正常访问google定位服务器,此时无需在manifest填写高德定位的sdk配置。
-
App:
``<map>``
组件默认为国测局坐标gcj02,调用
``uni.getLocation``
返回结果传递给
``<map>``
组件时,需指定 type 为 gcj02。
-
App:定位和map是2个东西。通过
`getLocation`
得到位置坐标后,可以在任意map地图上展示,比如定位使用高德,地图使用google的webview版地图。如果坐标系不同时,注意转换坐标系。
-
App:如果使用web-view加载地图,无需在manifest里配地图的sdk配置。
-
App:持续定位方案:iOS端可以申请持续定位权限,
[
参考
](
https://ask.dcloud.net.cn/article/12569
)
。Android如果进程被杀,代码无法执行。可以使用
[
unipush
](
https://ask.dcloud.net.cn/article/35622
)
,通过服务器激活App,执行透传消息,让App启动然后采集位置。Android上,即使自己写原生插件做后台进程,也很容易被杀,unipush是更合适的方案
-
小程序:api默认不返回详细地址中文描述。需要中文地址有2种方式:1、使用高德地图小程序sdk,在app和微信上都可以获得中文地址,
[
参考
](
http://ask.dcloud.net.cn/article/35070
)
。2、只考虑app,使用
``plus.geolocation``
也可以获取中文地址。manifest里的App SDK配置仅用于app,小程序无需在这里配置。
-
可以通过用户授权API来判断用户是否给应用授予定位权限
[
https://uniapp.dcloud.io/api/other/authorize
](
https://uniapp.dcloud.io/api/other/authorize
)
-
在微信小程序中,当用户离开应用后,此接口无法调用,需要申请
[
后台持续定位权限
](
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
)
,另外新版本中需要使用
[
wx.onLocationChange
](
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html
)
监听位置信息变化;当用户点击“显示在聊天顶部”时,此接口可继续调用。
-
`H5 平台`
-
在较新的浏览器上,H5 端获取定位信息,要求部署在
**https**
服务上,本地预览(localhost)仍然可以使用 http 协议。
-
国产安卓手机上,H5若无法定位,检查手机是否开通位置服务、GPS,ROM是否给该浏览器位置权限、浏览器是否对网页弹出请求给予定位的询问框。
-
`安卓手机`
在原生App内嵌H5时,无法定位需要原生App处理Webview。
-
`移动端浏览器`
普遍仅支持GPS定位,在GPS信号弱的地方可能定位失败。
-
`PC 设备`
使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。
-
使用地图和定位相关需要在
[
腾讯地图开放平台
](
https://lbs.qq.com/dev/console/key/manage
)
申请密钥,填写在
[
manifest.json
](
https://uniapp.dcloud.io/collocation/manifest?id=h5sdkconfig
)
中。
-
微信公众号可使用微信js sdk,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
2.9.9 版本以上,优化 uni.getLocation 支持通过 IP 定位。默认通过 GPS 获取,如果获取失败,备选方案是通过 IP 定位获取,需填写地图服务平台的秘钥(key)。key配置:manifest.json ---> H5配置 ---> 定位和地图 ---> key。
-
`App 平台`
-
Android由于谷歌服务被墙,或者手机上没有GMS,想正常定位就需要向高德等三方服务商申请SDK资质,获取AppKey。否则打包后定位就会不准。云打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南,详见:
[
https://ask.dcloud.net.cn/article/29
](
https://ask.dcloud.net.cn/article/29
)
。离线打包自行在原生工程中配置。注意包名、appkey、证书信息必须匹配。真机运行可以正常定位,是因为真机运行基座使用了DCloud向高德申请的sdk配置,打包后必须由开发者自己申请。如果手机自带GMS且网络环境可以正常访问google定位服务器,此时无需在manifest填写高德定位的sdk配置。
-
`<map>`
组件默认为国测局坐标gcj02,调用
`uni.getLocation`
返回结果传递给
`<map>`
组件时,需指定 type 为 gcj02。
-
定位和map是2个东西。通过
`getLocation`
得到位置坐标后,可以在任意map地图上展示,比如定位使用高德,地图使用google的webview版地图。如果坐标系不同时,注意转换坐标系。
-
如果使用
`web-view`
加载地图,无需在manifest里配地图的sdk配置。
-
持续定位方案:iOS端可以申请持续定位权限,
[
参考
](
https://ask.dcloud.net.cn/article/12569
)
。Android如果进程被杀,代码无法执行。可以使用
[
unipush
](
https://ask.dcloud.net.cn/article/35622
)
,通过服务器激活App,执行透传消息,让App启动然后采集位置。Android上,即使自己写原生插件做后台进程,也很容易被杀,unipush是更合适的方案
-
`小程序平台`
-
api默认不返回详细地址中文描述。需要中文地址有2种方式:1、使用高德地图小程序sdk,在app和微信上都可以获得中文地址,
[
参考
](
http://ask.dcloud.net.cn/article/35070
)
。2、只考虑app,使用
``plus.geolocation``
也可以获取中文地址。manifest里的App SDK配置仅用于app,小程序无需在这里配置。
-
可以通过用户授权API来判断用户是否给应用授予定位权限,
[
详见
](
https://uniapp.dcloud.io/api/other/authorize
)
-
在
`微信小程序`
中,当用户离开应用后,此接口无法调用,需要申请
[
后台持续定位权限
](
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html
)
,另外新版本中需要使用
[
wx.onLocationChange
](
https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.onLocationChange.html
)
监听位置信息变化;当用户点击“显示在聊天顶部”时,此接口可继续调用。
### uni.chooseLocation(OBJECT)
打开地图选择位置。
...
...
@@ -97,8 +100,8 @@ uni.getLocation({
**注意**
-
因平台差异,如果SDK配置百度地图,需要设置keyword,才能显示相关地点
-
nvue
下只支持高德地图,不支持百度地图
-
HBuilderX 2.4.0+
非 weex 编译模式仅支持高德地图
-
`nvue`
下只支持高德地图,不支持百度地图
-
`HBuilderX 2.4.0+`
非 weex 编译模式仅支持高德地图
**success 返回参数说明**
...
...
@@ -124,8 +127,10 @@ uni.chooseLocation({
```
**注意**
-
不同端,使用地图选择时基于的底层地图引擎不一样,如微信小程序和H5是腾讯地图,App和阿里小程序是高德地图,百度小程序是百度地图,详见地图map组件的使用注意事项。app中也可以使用百度定位,在manifest中配置,打包后生效。但app-nvue里只能用高德定位,不能用百度地图。另外选择地图、查看地图位置的API也仅支持高德地图。所以App端如无特殊必要,建议使用高德地图。
-
H5 端使用地图和定位相关,需要在 (manifest.json)[/collocation/manifest?id=h5sdkconfig] 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
-
微信内置浏览器中可使用微信js sdk,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
chooseLocation属于封装型API,开发者若觉得不够灵活,可自行基于原始的map组件进行封装。插件市场已经有各种封装样例了。
-
若Android App端位置不准,见上文uni.getLocation的注意事项
-
不同端,使用地图选择时基于的底层地图引擎不一样,如
`微信小程序和H5`
是腾讯地图,
`App和阿里小程序`
是高德地图,
`百度小程序`
是百度地图,详见地图map组件的使用注意事项。
-
`app`
中也可以使用百度定位,在manifest中配置,打包后生效。
-
`app-nvue`
里只能用高德定位,不能用百度地图。另外选择地图、查看地图位置的API也仅支持高德地图。所以App端如无特殊必要,建议使用高德地图。
-
`H5 端`
使用地图和定位相关,需要在 (manifest.json)[/collocation/manifest?id=h5sdkconfig] 内配置腾讯或谷歌等三方地图服务商申请的秘钥(key)。
-
`微信内置浏览器`
中可使用微信js sdk,
[
详见
](
https://ask.dcloud.net.cn/article/35380
)
-
chooseLocation 属于封装型API,开发者若觉得不够灵活,可自行基于原始的map组件进行封装。插件市场已经有各种封装样例了。
-
若
`Android App端`
位置不准,见上文uni.getLocation的注意事项
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录