uni

您所在的位置:网站首页 没有Note权限的手机有哪些虚拟定位软件 uni

uni

2024-02-21 12:24| 来源: 网络整理| 查看: 265

uni-app定位链接

主要遇到的问题,app上android无法获取定位信息,ios可以,模拟器上都可以获取定位,H5浏览器中获取定位同样失败

做法:

uni.getLocation({ type: 'wgs84', geocode: true, success: function (res) { console.log('当前位置的经度:' + res.longitude); console.log('当前位置的纬度:' + res.latitude); console.log('位置信息: ' +res.address ); } }); 注意:

H5:在较新的浏览器上,H5 端获取定位信息,要求部署在 https 服务上,本地预览(localhost)仍然可以使用 http 协议。

H5:国产安卓手机上,H5若无法定位,检查手机是否开通位置服务、GPS,ROM是否给该浏览器位置权限、浏览器是否对网页弹出请求给予定位的询问框。 H5:安卓手机在原生App内嵌H5时,无法定位需要原生App处理Webview。 H5:移动端浏览器普遍仅支持GPS定位,在GPS信号弱的地方可能定位失败。 H5:PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。 H5:使用地图和定位相关需要在腾讯地图开放平台申请密钥,填写在 manifest.json 中。 H5:微信公众号可使用微信js sdk,详见 H5:2.9.9 alpha升级,优化 uni.getLocation 支持通过 IP 定位。默认通过getLocation获取,如果获取失败,备选方案是通过 IP 定位获取,用的是内置公共的key,如果你想正确使用,就填写正常的key。如果你不想使用,就填写错误的key即可。key配置:manifest.json —> H5配置 —> 定位和地图 —> key。 App:Android由于谷歌服务被墙,或者手机上没有GMS,想正常定位就需要向高德等三方服务商申请SDK资质,获取AppKey。否则打包后定位就会不准。云打包时需要在manifest的SDK配置中填写Appkey。在manifest可视化界面有详细申请指南,详见:https://ask.dcloud.net.cn/article/29。离线打包自行在原生工程中配置。注意包名、appkey、证书信息必须匹配。真机运行可以正常定位,是因为真机运行基座使用了DCloud向高德申请的sdk配置,打包后必须由开发者自己申请。如果手机自带GMS且网络环境可以正常访问google定位服务器,此时无需在manifest填写高德定位的sdk配置。 App: 组件默认为国测局坐标gcj02,调用 uni.getLocation 返回结果传递给 组件时,需指定 type 为 gcj02。 App:定位和map是2个东西。通过getLocation得到位置坐标后,可以在任意map地图上展示,比如定位使用高德,地图使用google的webview版地图。如果坐标系不同时,注意转换坐标系。 App:如果使用web-view加载地图,无需在manifest里配地图的sdk配置。 App:持续定位方案:iOS端可以申请持续定位权限,参考。Android如果进程被杀,代码无法执行。可以使用unipush,通过服务器激活App,执行透传消息,让App启动然后采集位置。Android上,即使自己写原生插件做后台进程,也很容易被杀,unipush是更合适的方案 小程序:api默认不返回详细地址中文描述。需要中文地址有2种方式:1、使用高德地图小程序sdk,在app和微信上都可以获得中文地址,参考。2、只考虑app,使用plus.geolocation也可以获取中文地址。manifest里的App SDK配置仅用于app,小程序无需在这里配置。 可以通过用户授权API来判断用户是否给应用授予定位权限https://uniapp.dcloud.io/api/other/authorize 不同端,使用地图选择时基于的底层地图引擎不一样,如微信小程序和H5是腾讯地图,App和阿里小程序是高德地图,百度小程序是百度地图,详见地图map组件的使用注意事项。app中也可以使用百度定位,在manifest中配置,打包后生效。但app-nvue里只能用百度定位,不能用百度地图。另外选择地图、查看地图位置的API也仅支持高德地图。所以App端如无特殊必要,建议使用高德地图。

以上注意事项意思是:

1.H5必须https协议 2.app打包后,需要引用高德地图(百度不推荐,百度定位偏差较大),否则无法获取地址信息 3.模拟可以定位,是因为模拟器中集成了高德地图

另外H5端获取地址信息,发现通过getLocation获取的地址信息也没那么准确,故通过getLocation获取到经纬度后,去调用高德的反地理坐标的接口,获取到位置信息

结果:

export function getLocation() { const that = this // #ifdef APP-PLUS plus.geolocation.getCurrentPosition(res => { uni.setStorageSync('longitude',res.coords.longitude) uni.setStorageSync('latitude',res.coords.latitude) uni.setStorageSync('locationCity',res.address.city) uni.setStorageSync('locationInfo',res) }) // #endif // #ifdef H5 uni.getLocation({ type: 'gcj02', success: function (res) { uni.setStorageSync('longitude',res.longitude) uni.setStorageSync('latitude',res.latitude) let location = res.longitude + ',' + res.latitude that.$u.api.getPositionCity({location}).then(res => { if(res.data.status === '1'){ uni.setStorageSync('locationCity',res.data.regeocode.addressComponent.city) let locationInfo = { address: { city: res.data.regeocode.addressComponent.city, district: res.data.regeocode.addressComponent.district, poiName: "", province: res.data.regeocode.addressComponent.province, street: res.data.regeocode.addressComponent.streetNumber.street, streetNum: res.data.regeocode.addressComponent.streetNumber.number }, addresses: res.data.regeocode.formatted_address, } uni.setStorageSync('locationInfo',locationInfo) } }); } }); // #endif }

另外:

andorid高德秘钥参考文章: 查看证书信息 可以使用以下命令查看:

cd到证书目录地址下

keytool -list -v -keystore test.keystore Enter keystore password: //输入密码,回车

会输出以下格式信息:

Keystore type: PKCS12 Keystore provider: SUN Your keystore contains 1 entry Alias name: test Creation date: 2019-10-28 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN Issuer: CN=Tester, OU=Test, O=Test, L=HD, ST=BJ, C=CN Serial number: 7dd12840 Valid from: Fri Jul 26 20:52:56 CST 2019 until: Sun Jul 02 20:52:56 CST 2119 Certificate fingerprints: MD5: F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5 SHA1: BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7 SHA256: 24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3

https://ask.dcloud.net.cn/article/29

ios: bundleID

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3