HBuilder X 模拟位置使用的是什么坐标系【腾讯地图-火星坐标系】- 分析排查思路
结论:腾讯地图 火星坐标系
- 29.553221,106.554397(腾讯地图上找的一个参考坐标,实际位置 ↓)
- POI名称:重庆市人民医院(三院院区),地址:重庆市渝中区枇杷山正街104号
- 如果是这两个中的任意一个,就都是对的(在附近很近,则是位置有轻微偏移)
且似乎 uniapp 获取的是宿主环境的位置信息,宿主环境上有缓存他获取到的就有缓存
宿主环境的位置信息如何重新获取暂不清楚,可能需要触发获取位置的操作才会更新位置信息
- (2024.10.23 补充:↓ 下面的结论为模糊印象推测,遇到一样问题的朋友可以参考下,看看能不能帮到你)
- 微信打开 uniapp h5,拿到的就是微信的位置信息
- 印象中缓存较为严重,可以试试聊天窗口发送位置,看看能不能触发位置更新,从而拿到最新的位置信息
- 企业微信打开 uniapp h5,拿到的就是企业微信的位置信息
- 印象中缓存较为严重,可以试试聊天窗口发送位置,看看能不能触发位置更新,从而拿到最新的位置信息
- 手机浏览器打开,拿到的就是浏览器的位置信息
- 似乎浏览器位置的缓存情况不严重
- 据公司同事多人手机实测,
uni.getLocation
方法获取到的坐标都大有不同,只有一个同事的是准的(位置信息还与手机机型、定位芯片、系统隐私设置是否返回模糊位置相关)
地图取点,转成 wgs84 坐标,放到 HBuilder X 模拟坐标
查看代码获取的 84 坐标
转成 gcj02 坐标
用 gcj02 坐标通过腾讯地图位置服务获取地址,比对地址是否一致
如若不对,自己找转换方法进行验证
- 猜测是代码里的坐标系转换方法有问题
试试改成 gcj02 的坐标,看看有没有问题
分析排查情况记录
给 HBuilder X 内置浏览器填入的火星坐标系坐标,type gcj02 获取到的坐标不对(估计偏了几公里)
- 29.550363
- 106.558109
给 HBuilder X 内置浏览器填入的火星坐标系坐标,type wgs84 获取到的坐标是一样的 => 29.553221,106.554397
- 但是转换成火星坐标系后定位出来是错的
- 29.550363,106.558109
- 渝中区菜园坝中化石油南区路加油站东(长江滨江路)
- 重庆市渝中区长滨路317-2号
√ 给 HBuilder X 内置浏览器填入的 wgs84坐标系坐标,type wgs84 获取到的坐标是一样的 => 29.556066764160157,106.55068148486328
- 转换成火星坐标系后,定位出来的是对的
- 29.553216643967726,106.55439987347071
- 重庆市人民医院(三院院区)
- 重庆市渝中区枇杷山正街104号
根据当前定位坐标获取地址中文信息功能 开发思路
- 腾讯地图 坐标取点(gcj02 坐标系)
- 使用在线坐标转换工具 (转成 wgs84 坐标)
- HBuilder X 内置浏览器模拟坐标(wgs84 的坐标放进去)
(模拟坐标 ↑(手动操作),获取坐标转换地址 ↓(代码解析))
- uni.getLocation type: “wgs84” 获取坐标(wgs84 坐标,拿到的就是前面模拟的坐标)
- js 代码将 wgs84 坐标转换为 gcj02 坐标
- 腾讯地图逆地址解析 api 获取地址中文名
对比地址一致,则功能无问题
相关网站、工具
- 坐标逆地址解析 地址接口 | 接口文档
- gcj02 坐标获取中文地址名称接口文档
- Webservice API 示例中心
- 坐标逆地址解析 地址接口测试地址
- 添加了key,并且配置了限额后,基本就能获取到了,如果还是提示超限,大概率是没配对或者key给错了
- 参数绕过代码测试 key 是否合法有效
- 点图拾取坐标-地图开放平台|腾讯位置服务 (qq.com)
- 搜地址转、搜坐标(29.543889634833775,106.5226245214386)
uni.getLocation+腾讯地图获取位置信息(uniapp)_uniapp getlocation-CSDN博客
- 【荐】跟目前系统里的用法一样,含详细配置操作
------------- END 许愿区 -------------
最近想换工作,有没有大佬捞一下
本人5年前端开发工作经验,函授本科学历,软件工程专业毕业,在校有专业竞赛经历并获奖
会做大屏驾驶舱、PC端业务系统、移动端H5应用、uniapp 多端应用开发、原生微信小程序开发
意向城市成都、重庆,川渝两省范围优先考虑