uni.getLocation({
type: 'gcj02',
success: res => {
},
fail: (err) => {
}
})
产品分类: uniapp/H5
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 4.23
浏览器平台: Edge
浏览器版本: 126.0.2592.102
项目创建方式: HBuilderX
uni.getLocation({
type: 'gcj02',
success: res => {
},
fail: (err) => {
}
})
getLocation这个api入参的type为gcj02时即可复现
应正常返回结果
调用失败,返回getLocation:fail translate coordinate system fail
uni.getLocation 配置了腾讯地图Key,type选择gcj02 报错getLocation:fail translate coordinate system fail
查看接口调用,发现其中https://apis.map.qq.com/jsapi这个接口调用失败,返回信息为此功能未授权
完整接口地址为https://apis.map.qq.com/jsapi?qt=translate&type=1&points=xx&key=xxx&output=jsonp&pf=jsapi&ref=jsapi&cb=__callback17213882130876722463906432088
其中key和经纬度已被我替换为xxx
最佳回复
Web平台,含uni-app和uni-app x,使用腾讯定位和地图时,uni.getLocation、uni.chooseLocation、uni.onLocationChange
这3个API之前调用了腾讯地图的gcj02坐标免费转换接口,该接口从2024年7月18日起被腾讯逐步下线,导致老版本中本API无法使用。请立即升级到 uni-app 4.24版
。
升级后仍然失败的同学看这里:
地图厂商的商业授权较贵,如需购买,请点击获取优惠。
如果你的网站只在微信浏览器里运行,可以使用微信的jssdk的定位能力。这个是微信向腾讯地图申请的key,开发者无需配置自己的key。
同时DCloud已经在排查所有涉及到线上接口调用的代码,防止还有其他隐患发生。
以下为过期内容
=================================================
目前可用的临时处理方案,包括:
app相关问题,另见这个帖子:https://ask.dcloud.net.cn/question/195066
已解决
处理方案
1.全部替换type = wgs84
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门,调用api报错了这个解决了么,有偿能不能帮小弟解决一下,qq1446316759
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门 web h5端
回复 DCloud_UNI_yuhe: 早上还可以,现在又不行了。报错:TypeError: Cannot read properties of undefined (reading 'length')
2024-07-22 14:27
import '@/utils/location-qqmap-fix.js';
//获取定位
async getLocation() {
uni.showLoading({ title: '正在获取位置'});
uni.getLocation({
type: 'wgs84',
success: (res) => {
this.location=res;
uni.hideLoading();
},
fail: function (res) {
uni.hideLoading();
}
});
}
2024-07-22 17:15
<map style="width: 100%; height: 300px;" :latitude="location.latitude" :longitude="location.longitude" :markers="[{latitude: this.location.latitude,longitude: this.location.longitude,iconPath: '../../../static/location.png'}]"></map>
2024-07-22 17:17
回复 DCloud_UNI_yuhe: 我看了你发的代码,是调用腾讯的标准GPS坐标系批量转换到腾讯地图坐标系。我调用时也是使用的wgs84,但转出来的位置就有偏差
2024-07-22 17:28
function wgs84ToGcj02(lat, lng) {
const a = 6378245.0;
const ee = 0.00669342162296594323;
const transformLat = function(wgsLat, wgsLng) {
let ret = -100.0 + 2.0 wgsLat + 3.0 ee Math.sin(wgsLat Math.PI / 180) + 0.2 Math.sin(2 wgsLat Math.PI / 180);
ret += 0.00002 Math.sin(wgsLat Math.PI / 180) Math.sin(wgsLat Math.PI / 180);
ret += (20.0 Math.sin(6.0 wgsLat Math.PI / 180) Math.sin(6.0 wgsLat Math.PI / 180)) / 3.0;
ret += (20.0 Math.sin(2.0 wgsLat Math.PI / 180) Math.sin(2.0 wgsLat Math.PI / 180)) / 15.0;
ret += (160.0 Math.sin(wgsLat Math.PI / 180) Math.sin(wgsLat Math.PI / 180)) / 3.0 Math.sin(wgsLat Math.PI / 180);
ret += (320 Math.sin(wgsLat Math.PI / 180) Math.sin(wgsLat Math.PI / 180)) / 15.0 Math.sin(2 wgsLat Math.PI / 180);
return ret;
};
const transformLng = function(wgsLat, wgsLng) {
let ret = 300.0 + wgsLng + 2.0 Math.sin(wgsLng Math.PI / 180) + 3.0 ee Math.cos(wgsLat Math.PI / 180) Math.sin(wgsLng Math.PI / 180);
ret += 0.00002 Math.cos(wgsLat Math.PI / 180) Math.sin(wgsLng Math.PI / 180);
ret += (20.0 Math.sin(6.0 wgsLng Math.PI / 180) Math.sin(wgsLat Math.PI / 180)) / 3.0;
ret += (20.0 Math.sin(2.0 wgsLng Math.PI / 180) Math.sin(wgsLat Math.PI / 180)) / 15.0;
ret += (150.0 Math.sin(wgsLng Math.PI / 180) Math.sin(wgsLng Math.PI / 180)) / 3.0;
ret += (300.0 Math.sin(wgsLng Math.PI / 180) Math.sin(wgsLng Math.PI / 180) Math.cos(wgsLat * Math.PI / 180)) / 15.0;
return ret;
};
const wgsLat = lat;
const wgsLng = lng;
const lats = transformLat(wgsLat, wgsLng);
const lngs = transformLng(wgsLat, wgsLng);
const retLat = lats - 0.006;
const retLng = lngs - 0.006;
return {
latitude: retLat,
longitude: retLng
};
2024-07-22 19:59
你好 更新到最新版本 使用uni.getLocation , type: 'gcj02' , Web配置也配了地图key ,
还是报 errMsg: "getLocation:fail translate coordinate system fail"
2024-07-23 15:45
回复 DCloud_UNI_yuhe: 按你上面的要求 都检查了 , 使用uni.getLocation , type: 'gcj02' ,之前是在edge 浏览器测试的 是会报 errMsg: "getLocation:fail translate coordinate system fail" , 后面 在 微信浏览器上测试 就不会报错了, 但位置不准确, 请教一下 这问题 有什么好的解决方案 ,谢谢
2024-07-24 11:00
回复 DCloud_UNI_GSQ: 浏览器网络请求没看到有报错的 控制台 报 VM8040:1
[system] {errMsg: 'getLocation:fail translate coordinate system fail'}
然后 使用 uni.getLocation 控制台 打印 走的是 fail: (res) =>{}
报{errMsg: 'getLocation:fail translate coordinate system fail'}
2024-07-24 17:54
HBuilderX 4.24.2024072208 已修复。
回复 DCloud_UNI_GSQ: 之前均可用,本次问题发生时获取高精度坐标场景皆不可用,手机微信h5,网页端均无法使用,navigator.geolocation也无法获取定位,会一直卡住
2024-07-23 14:56
回复 1***@qq.com: 如果navigator.geolocation都不可用,说明与此次坐标转换接口无关,navigator.geolocation是浏览器提供的,如果navigator.geolocation都卡住了,就执行不到后面坐标转换的流程。
2024-07-23 17:33
各位H5的DCloud管理员们,目前最新版本更新没有解决微信公众号H5的uni.chooseLocation方法获取地理位置还是为空的,麻烦大佬们看一下哈,谢谢了
回复 DCloud_UNI_yuhe: 在manifest.json里面设置过了,"sdkConfigs" : {
"maps" : {
"qqmap" : {
"key" : "我的key"
}
}
}
2024-07-23 14:25
4.26 还没发布呢,怎么文档都已经更新了。。。
回复 DCloud_UNI_GSQ: 问题有些项目是不注册微信平台,不做公众号、小程序的,没有AppID,怎么用微信的jssdk呢,是用户习惯直接在微信里点开H5的链接,我们没法强制要求客户不用微信浏览器,还有H5的uni.chooseLocation在微信浏览器都是正常的,就这次腾讯地图更新影响了;就算你们发布4.24了也还是打不开,你们有测试吗?
2024-07-23 17:09
我觉得你们先自己测试一下,用uniapp生成h5模式在微信里面打开,uni.chooseLocation无法定位了,腾讯那边的技术人员说,原来的v2接口下架了,你们需要重新更新一下api接口
uni.chooseLocation,ios目前问题依旧,只能选择位置。还会报错
21:02:31.770 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:31.771 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:31.771 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:31.772 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:31.772 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:32.799 TypeError: undefined is not an object (evaluating 'e.name') ERROR
21:02:32.800 TypeError: undefined is not an object (evaluating 'e.name') __ERROR
关键点:
1***@qq.com - 长路漫漫、、、、、
我想问下哈,微信公众号网页里使用chooseLocation添加地址,安卓上初始化会弹窗定位弹窗然后定位成功然后下面地址列表展示周围地址信息,但是在ios机型上,有时候会弹窗地址权限,有时候会不弹,大部分情况会不弹,然后导致地图展示位置在北京,然后下面地址列表为空,这个问题是不是uniapp自带的chooseLocation未触发到公众号的定位权限,望官方解惑或排查下问题
用的是高德地图,web配置里也进行了地图key和安全密钥也配了,公众号里 ios定位权限弹窗没出来的话就是这样的一个情况,弹窗出来的话是定位成功并展示周边地址列表信息的,但是大部分情况不会弹窗不清楚为什么
2024-07-31 14:51
回复 DCloud_UNI_yuhe: 未点过拒绝,进入首页的时候会走微信定位获取当前位置展示都是允许的,但是我新增收货地址那里选择地址打开,ios并未弹出是否允许定位的弹窗,安卓手机是不会弹但是是正常的,能获取当前位置并展示周边位置信息,ios展示的是北京且底下没有周边位置信息展示是空白的,拖动才有周边位置信息展示出来,但是是北京的,但是ios偶尔(十次有一俩次)会弹出允许定位的弹窗点击允许然后位置是对的,底下列表也是正常的展示周边位置信息,不清楚为啥
2024-08-02 09:37
回复 DCloud_UNI_yuhe: 是的,不传的话ios不出现定位授权弹窗然后地图位置展示不对,底下列表也没任何信息,建议还是看下这个问题给改下,不然如果遇到其他地方没定位的直接使用这个方法进入,ios会出现那种在北京,底下空白的情况
2024-08-02 16:26
回复 DCloud_UNI_yuhe: 拖动才有周边位置信息展示出来,但是是北京的位置,地址都空白的,所以这问题一直是存在的,所以你们麻烦检查一下,重新发一个版本的,大家都是存在问题的,不然也不会来反馈问题啊
2024-08-02 23:37
回复 DCloud_UNI_yuhe: 希望官方解决下这个问题,几个项目都出现这个情况了,目前是把已经定位后的经纬度传过去了,地图位置展示当前的位置并底下列表有展示,如果不传多项目都出现地图展示位置在北京,底下列表为空,拖拽地图后才能展示列表的问题
2024-08-21 14:45
chunk-vendors.js:44619 [Vue warn]: Error in mounted hook: "TypeError: (t.OverlayView || t.Overlay) is not a constructor"
h5使用uni.chooseLocation 报这个错 一直转圈圈 配的腾讯地图的key 配额 白名单都没问题
回复 DCloud_UNI_yuhe: 我发了好几次,h5使用uni.chooseLocation一直报错,出现{errMsg: "getLocation:fail translate coordinate system fail"},经纬度为空, 配的腾讯地图的key 配额 白名单都没问题
2024-08-08 14:12
Harleyx
大佬 这只是处理了uni.getLocation,H5的uni.chooseLocation没处理呢,一样还是未授权
2024-07-19 22:04
9***@qq.com
大佬 这只是处理了uni.getLocation,H5的uni.chooseLocation没处理呢,
2024-07-19 22:32
DCloud_UNI_GSQ
回复 9***@qq.com: 莫慌,稍后再给出一版免升级解决方案
2024-07-20 11:43
Harleyx
回复 DCloud_UNI_GSQ: 我还要补充下,uni.getLocation,uni.chooseLocation这两个就算换成腾讯的84,微信浏览器一样不行,
2024-07-20 11:52
DCloud_UNI_GSQ
回复 9***@qq.com: 已更新修复方式
2024-07-20 13:29
DCloud_UNI_GSQ
回复 Harleyx: 微信内建议使用微信的jssdk
2024-07-20 13:30
Harleyx
引入新的js,腾讯的uni.chooseLocation可以用了
2024-07-20 14:18
mengdodo
回复 Harleyx: 真的假的哦,我安卓一直不行,改了两个js后ios能行,安卓不行,再引入这个js安卓依旧
2024-07-20 15:34
DCloud_UNI_GSQ
回复 mengdodo: 这是h5/web使用的方式,app的方案参考:https://ask.dcloud.net.cn/question/195066
2024-07-20 15:35
9***@qq.com
什么时候能处理好,而不是使用临时解决方案
2024-07-20 15:37
3***@qq.com
回复 DCloud_UNI_GSQ: 有没有不更新的方案
2024-07-20 17:47
3***@qq.com
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门 web h5端 是怎么解决的
2024-07-20 20:25
2***@qq.com
回复 DCloud_UNI_GSQ: 引了JS,H5的 uni.getlocation也不行啊
2024-07-20 22:42
1***@qq.com
为什么我看不到附件?
2024-07-22 09:46
1***@qq.com
onLocationChange:fail translate coordiate system fail, 哥,这个接口是否有被影响?
2024-07-22 11:37
DCloud_UNI_yuhe
回复 1***@qq.com:还得经过验证
2024-07-22 11:42
y***@163.com
修复版本什么时候发布啊,在线等
2024-07-22 13:56
1***@163.com
报错:TypeError: Cannot read properties of undefined (reading 'appendChild')
2024-07-22 13:59
DCloud_UNI_yuhe
回复 1***@163.com: 确定是getLocation的报错吗?appendChild?
2024-07-22 14:26
8***@qq.com
报错:TypeError: Cannot read properties of undefined (reading 'length')
2024-07-22 14:26
小鹏健康
改为wgs84并替换了js可以了。但是uni. chooseLocation选择位置后,选中☑️还是要点击两次才能关闭当前地图选择页面回到上一级页面。
2024-07-22 14:39
8***@qq.com
import '@/util/location-qqmap-fix.js';在有用到页面这么引入没错吧。早上还可以用。现在uni. chooseLocation报错:TypeError: Cannot read properties of undefined (reading 'length')
2024-07-22 14:42
1***@qq.com
回复 Harleyx: 请教一下引入的步骤能不能描述一下
2024-07-22 15:02
1***@qq.com
js 引入的步骤能不能描述一下
2024-07-22 15:04
2***@qq.com
改为wgs84,增加并引用了上面的js,但转换出来的坐标位置不准
2024-07-22 16:53
DCloud_UNI_yuhe
回复 1***@qq.com: 引入步骤见下方评论
2024-07-22 17:04
1***@qq.com
下次发版具体时间是?
2024-07-22 18:15
2***@qq.com
回复 DCloud_UNI_yuhe:h5版本uni. chooseLocation 微信开发者没有问题 打包到线上 不能定位 搜索地址列表响应慢 文件引入了 还是没有变化 求助大佬啊
2024-07-22 19:56
DCloud_UNI_GSQ
回复 2***@qq.com: 如果使用了腾讯地图等厂商的服务,注意地图厂商后台配置的KEY允许的域名列表是否包含你们的线上服务器域名
2024-07-23 17:24
DCloud_UNI_yuhe
回复 小鹏健康: 更新版本之后,还有这种问题吗
2024-07-23 17:51