uni-app中uni.getLocation配置腾讯地图Key且type选gcj02报错,接口https://apis.map.qq.com/jsapi返回未授权
uni-app中uni.getLocation配置腾讯地图Key且type选gcj02报错,接口https://apis.map.qq.com/jsapi返回未授权
示例代码:
uni.getLocation({
type: 'gcj02',
success: res => {
},
fail: (err) => {
}
})
操作步骤:
- getLocation这个api入参的type为gcj02时即可复现
预期结果:
- 应正常返回结果
实际结果:
- 调用失败,返回getLocation:fail translate coordinate system fail
bug描述:
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版。
升级后仍然失败的同学看这里:
如果是cli,需要配套升级cli
manifest中配置好自己的地图厂商key。注意是web。
确保在地图厂商那里配额足够
确保在地图厂商那里有周边服务的权限。否则无法获取周围地址
web平台确保自己的域名在地图厂商那里正确配置了域名白名单
地图厂商的商业授权较贵,如需购买,请点击获取优惠。
如果你的网站只在微信浏览器里运行,可以使用微信的jssdk的定位能力。这个是微信向腾讯地图申请的key,开发者无需配置自己的key。
同时DCloud已经在排查所有涉及到线上接口调用的代码,防止还有其他隐患发生。
以下为过期内容
目前可用的临时处理方案,包括:
改用wgs84坐标,如需转换gcj02,自行调用任意一家地图厂商的服务器接口进行转换
如果在微信浏览器中,可使用微信的jssdk获取定位坐标
更新uni-app补丁
将如下附件压缩包中的JS文件以任何方式引入uni-app WEB项目,源码或者编译后的文件均可。
app相关问题,另见这个帖子:https://ask.dcloud.net.cn/question/195066
大佬 这只是处理了uni.getLocation,H5的uni.chooseLocation没处理呢,一样还是未授权
大佬 这只是处理了uni.getLocation,H5的uni.chooseLocation没处理呢,
回复 9***@qq.com: 莫慌,稍后再给出一版免升级解决方案
回复 DCloud_UNI_GSQ: 我还要补充下,uni.getLocation,uni.chooseLocation这两个就算换成腾讯的84,微信浏览器一样不行,
回复 9***@qq.com: 已更新修复方式
回复 Harleyx: 微信内建议使用微信的jssdk
引入新的js,腾讯的uni.chooseLocation可以用了
回复 mengdodo: 这是h5/web使用的方式,app的方案参考:https://ask.dcloud.net.cn/question/195066
什么时候能处理好,而不是使用临时解决方案
回复 DCloud_UNI_GSQ: 有没有不更新的方案
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门 web h5端 是怎么解决的
回复 DCloud_UNI_GSQ: 引了JS,H5的 uni.getlocation也不行啊
为什么我看不到附件?
onLocationChange:fail translate coordiate system fail, 哥,这个接口是否有被影响?
回复 1***@qq.com:还得经过验证
修复版本什么时候发布啊,在线等
报错:TypeError: Cannot read properties of undefined (reading ‘appendChild’)
回复 1***@163.com: 确定是getLocation的报错吗?appendChild?
报错:TypeError: Cannot read properties of undefined (reading ‘length’)
改为wgs84并替换了js可以了。但是uni. chooseLocation选择位置后,选中☑️还是要点击两次才能关闭当前地图选择页面回到上一级页面。
import ‘@/util/location-qqmap-fix.js’;在有用到页面这么引入没错吧。早上还可以用。现在uni. chooseLocation报错:TypeError: Cannot read properties of undefined (reading ‘length’)
回复 Harleyx: 请教一下引入的步骤能不能描述一下
改为wgs84,增加并引用了上面的js,但转换出来的坐标位置不准
回复 1***@qq.com: 引入步骤见下方评论
下次发版具体时间是?
回复 DCloud_UNI_yuhe:h5版本uni. chooseLocation 微信开发者没有问题 打包到线上 不能定位 搜索地址列表响应慢 文件引入了 还是没有变化 求助大佬啊
回复 小鹏健康: 更新版本之后,还有这种问题吗
大佬们 ,我这边web项目配置了 腾讯地图 key ;使用chooseLocation api 依然报错: getLocation:fail translate coordinate system fail;
回复 DCloud_UNI_yuhe:app在苹果16上运行,会报没有uni-getLocation-tencent-uni1 模块不存在,我用的是高德并不使用腾讯,用的还是云打包,有什么解决方案吗?
解决了,赞
可行
又不行了,报错:TypeError: Cannot read properties of undefined (reading ‘length’)
都这样的,换微信 jssdk正常。uni.getlocation今早开始慢,下午彻底挂了。
涉及的项目这么多 官方不修复 后面谁还敢用?都几天了 也没搞定
回复 王超: 已与当日发布临时处理方案,昨日已发布版本更新。
h5端调用uni.chooselocation报’getLocation:fail translate coordinate system fail’,在网络里面看报错消息是"status": 111,
“message”: “签名验证失败”, 我申请key的时候有设置签名sig。请问要怎么解决。
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门,调用api报错了这个解决了么,有偿能不能帮小弟解决一下,qq1446316759
相同问题,统一合并到这个帖子处理:https://ask.dcloud.net.cn/question/195066 在这,工作人员置顶回复那边也写了
你好,uni.chooseLocation选择地图没有显示地址列表,地图也是每次都是固定在天安门 web h5端
你是怎么引入的
回复 DCloud_UNI_yuhe: 早上还可以,现在又不行了。报错:TypeError: Cannot read properties of undefined (reading ‘length’)
回复 DCloud_UNI_yuhe: uni.chooseLocation在h5端微信里面还是显示地图位置
回复 纵横四海: 看一下置顶回复里的说明
你是怎么引入的
回复 DCloud_UNI_yuhe: 应该怎么引入呢?
改为wgs84并替换了js可以了。但是uni. chooseLocation选择位置后,选中☑️还是要点击两次才能关闭当前地图选择页面回到上一级页面。
引入方式:
1、从main.js中引入:
import “./location-qqmap-fix.js”
2、在打包后的html文件中引入(unpackage):
<script src="./location-qqmap-fix.js"></script>你好,请问下转换出来的位置不准确如何解决
回复 2***@qq.com: 有偏差吗,你能验证一下是否是坐标系的问题吗
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(); } }); }
<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>
回复 DCloud_UNI_yuhe: 我看了你发的代码,是调用腾讯的标准GPS坐标系批量转换到腾讯地图坐标系。我调用时也是使用的wgs84,但转出来的位置就有偏差
回复 2***@qq.com: 有偏差处理偏差就行,方案是没问题de
不建议用2 因为每次都需要重新引入
回复 Mr丿Lee: 有偏差处理函数吗
回复 2***@qq.com: 我一般是丢服务端转,我写后端比较多,感觉后端转起来更方便点
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 };
AI回复你的可以试试看
这样配置了,还是获取不到lbs呀
你好 更新到最新版本 使用uni.getLocation , type: ‘gcj02’ , Web配置也配了地图key , 还是报 errMsg: “getLocation:fail translate coordinate system fail”
回复 1***@qq.com: 这样是没配置成功,我刚才测试,正常,把key去掉,报跟你一样的错
回复 1***@qq.com: 到地图服务后台检查一下你们的配额,以及域名白名单
回复 DCloud_UNI_yuhe: 按你上面的要求 都检查了 , 使用uni.getLocation , type: ‘gcj02’ ,之前是在edge 浏览器测试的 是会报 errMsg: “getLocation:fail translate coordinate system fail” , 后面 在 微信浏览器上测试 就不会报错了, 但位置不准确, 请教一下 这问题 有什么好的解决方案 ,谢谢
回复 1***@qq.com: 你web平台配置的哪个地图厂商的key?
回复 DCloud_UNI_GSQ: 用的腾讯的
回复 1***@qq.com: 腾讯地图后台白名单配置了吗?
回复 DCloud_UNI_GSQ: 没配 不是有写 空白 表示不限制?
回复 1***@qq.com: 是的,你在能复现问题的浏览器看一下网络请求
回复 DCloud_UNI_GSQ: 浏览器网络请求没看到有报错的 控制台 报 VM8040:1 [system] {errMsg: ‘getLocation:fail translate coordinate system fail’} 然后 使用 uni.getLocation 控制台 打印 走的是 fail: (res) =>{} 报{errMsg: ‘getLocation:fail translate coordinate system fail’}
回复 1***@qq.com: 看网络请求里请求的哪个转换接口
回复 DCloud_UNI_GSQ: 现在好了 浏览器可以获取到 了 就是定位返回的坐标不准,之前是准的
回复 1***@qq.com: 准确程度和之前是没有区别的,如果是PC端测试可以试试edge浏览器,或者手机到空旷的地方搜星试试
HBuilderX 4.24.2024072208 已修复。
需要删除我们现在引入的那个js吗
chooseLocation 列表不显示的问题 web 没有修复
更新后确实可以准确获取位置信息了
Web平台 uni.chooseLocation 目前还没有修复呢,经纬度还是为空的
web端,更新4.24.2024072208版本后gcj02无变化,依旧是需要等很久最后返回的是基于IP地址定位的坐标
问题依然存在
回复 Mr丿Lee: 删除与否都可以
回复 1***@qq.com: 说明你设备的获取不到高精度坐标,与转换无关,与此次问题无关,与此次修复也无关
回复 DCloud_UNI_GSQ: 之前均可用,本次问题发生时获取高精度坐标场景皆不可用,手机微信h5,网页端均无法使用,navigator.geolocation也无法获取定位,会一直卡住
回复 1***@qq.com: 如果navigator.geolocation都不可用,说明与此次坐标转换接口无关,navigator.geolocation是浏览器提供的,如果navigator.geolocation都卡住了,就执行不到后面坐标转换的流程。
uni.getLocation 慢的要死,获取坐标要等3-5分钟
回复 1***@qq.com: 跟你情况一样,大佬怎么解决的
各位H5的DCloud管理员们,目前最新版本更新没有解决微信公众号H5的uni.chooseLocation方法获取地理位置还是为空的,麻烦大佬们看一下哈,谢谢了
现在的chooseLocation需要使用key,你检查一下你的key是否有周边服务的权限
回复 DCloud_UNI_yuhe: 在manifest.json里面设置过了,“sdkConfigs” : { “maps” : { “qqmap” : { “key” : “我的key” } } }
回复 DCloud_UNI_yuhe: 管理员你好,这块一直有配置key的
回复 DCloud_UNI_GSQ: 之前都正常的,看看你们有没有更好的解决方案啊,谢谢了
回复 纵横四海: 到地图服务后台检查一下你们的配额,以及域名白名单
回复 DCloud_UNI_GSQ: 配合肯定没问题的,之前都好好的,腾讯那边说过了,需要你们更新他们最新的api
回复 纵横四海: 和腾讯那边确认过旧版接口下架了,已于19日发布临时更新方案,于昨日发布正式版本更新,更新后不再使用旧版的接口。
4.26 还没发布呢,怎么文档都已经更新了。。。
这个是文档错误,是4.24
回复 DCloud_UNI_yuhe: 你们针对公众号H5的uni.chooseLocation方法还会更新一个版本?
回复 纵横四海: 不会,此转换问题与公众号无关
回复 纵横四海: 如果是在微信内使用,建议使用微信的jssdk,其使用原生的定位接口比浏览器提供的定位更稳妥。
回复 DCloud_UNI_GSQ: 问题有些项目是不注册微信平台,不做公众号、小程序的,没有AppID,怎么用微信的jssdk呢,是用户习惯直接在微信里点开H5的链接,我们没法强制要求客户不用微信浏览器,还有H5的uni.chooseLocation在微信浏览器都是正常的,就这次腾讯地图更新影响了;就算你们发布4.24了也还是打不开,你们有测试吗?
回复 Harleyx: 微信内使用的jssdk只是微信平台给提供的一个优化体验的方式,并不是强制使用的。
回复 Harleyx: 关于你说的打不开的问题是指的什么打不开?能否详细描述一下。
我觉得你们先自己测试一下,用uniapp生成h5模式在微信里面打开,uni.chooseLocation无法定位了,腾讯那边的技术人员说,原来的v2接口下架了,你们需要重新更新一下api接口
回复 纵横四海: 回复 DCloud_UNI_yuhe: 从19号开始调用uni.chooseLocation这个方法就出现{errMsg: “getLocation:fail translate coordinate system fail”},经纬度为空
是的下架了,已更新
已于19日发布临时更新方案,于昨日发布正式版本更新,更新后不再使用旧版的接口。
如果你使用新版重新发布网站后在特定浏览器仍然请求到了旧版接口,检查一下是否是由于浏览器缓存导致你没有访问到自己网站的新版。
回复 DCloud_UNI_GSQ: 有一个新的问题,就是如果我们的key每个客户用自己的,那这种每个客户都封一个前端还是?
回复 Mr丿Lee:在manifest.json文件里的sdkConfigs设置key的,你们现在发现问题了?
回复 Mr丿Lee: 可以在运行时动态修改,不过属于暂未提供公开支持的方式。
回复 DCloud_UNI_GSQ: 先有什么解决方案呢
回复 Mr丿Lee: 可以用cli,写个命令行脚本,打包时动态修改manifest,然后调cli发布
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
关键点:
hbuilderx 升级到4.24
腾讯地图后台的配置管理 -> 账户额度都要配(刚开始只配了ip定位和第二页的周边推荐(explore),发现没有用,然后首页配满了和第二页的第一个和周边推荐就好了,咱也不知道到底要配哪几个,哈哈哈)
我想问下哈,微信公众号网页里使用chooseLocation添加地址,安卓上初始化会弹窗定位弹窗然后定位成功然后下面地址列表展示周围地址信息,但是在ios机型上,有时候会弹窗地址权限,有时候会不弹,大部分情况会不弹,然后导致地图展示位置在北京,然后下面地址列表为空,这个问题是不是uniapp自带的chooseLocation未触发到公众号的定位权限,望官方解惑或排查下问题
用的是高德地图,web配置里也进行了地图key和安全密钥也配了,公众号里 ios定位权限弹窗没出来的话就是这样的一个情况,弹窗出来的话是定位成功并展示周边地址列表信息的,但是大部分情况不会弹窗不清楚为什么
回复 1***@qq.com: 你在测试的时候,有点过拒绝的情况吗?还有检查过微信是否具有位置授权吗?
回复 DCloud_UNI_yuhe: 未点过拒绝,进入首页的时候会走微信定位获取当前位置展示都是允许的,但是我新增收货地址那里选择地址打开,ios并未弹出是否允许定位的弹窗,安卓手机是不会弹但是是正常的,能获取当前位置并展示周边位置信息,ios展示的是北京且底下没有周边位置信息展示是空白的,拖动才有周边位置信息展示出来,但是是北京的,但是ios偶尔(十次有一俩次)会弹出允许定位的弹窗点击允许然后位置是对的,底下列表也是正常的展示周边位置信息,不清楚为啥
回复 DCloud_UNI_yuhe: 我现在选择地址的时候我把首页定位过的经纬度给传过去了,是正常展示的,希望官方排查下修复下吧 /捂脸
回复 1***@qq.com: 是把定位过后的经纬度传过去就稳定好了?
回复 DCloud_UNI_yuhe: 是的,不传的话ios不出现定位授权弹窗然后地图位置展示不对,底下列表也没任何信息,建议还是看下这个问题给改下,不然如果遇到其他地方没定位的直接使用这个方法进入,ios会出现那种在北京,底下空白的情况
回复 DCloud_UNI_yuhe: 拖动才有周边位置信息展示出来,但是是北京的位置,地址都空白的,所以这问题一直是存在的,所以你们麻烦检查一下,重新发一个版本的,大家都是存在问题的,不然也不会来反馈问题啊
回复 纵横四海: 我说的是ios手机在微信浏览器环境下的情况,这个情况是因为微信授权定位弹窗没出来,安卓是正常的,浏览器环境应该都是正常的
回复 DCloud_UNI_yuhe: 希望官方解决下这个问题,几个项目都出现这个情况了,目前是把已经定位后的经纬度传过去了,地图位置展示当前的位置并底下列表有展示,如果不传多项目都出现地图展示位置在北京,底下列表为空,拖拽地图后才能展示列表的问题
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 配额 白名单都没问题
回复 纵横四海: 你私信发我一下你的key,我测试一下
回复 DCloud_UNI_yuhe: 你好,我已经私给你了,麻烦你回复一下我的私信啊,谢谢了
回复 纵横四海: 好的
回复 纵横四海: 插眼,解决了踢我一下,谢谢
公众号手机端h5安卓和苹果,调用uni.chooseLocation一直都有定位问题,所以DCloud_UNI各位大佬们有没有解决的方案啊
一样 ,大佬解决了吗?
回复 1***@qq.com: 升级4.24版本
配置了腾讯地图的key,使用getlocation获取gcj02坐标,本地测试获取很快,发布到线上获取超级慢或者直接失败!
回复 DCloud_UNI_yuhe: web端,本地测试拿到的定位还不准确
回复 9***@qq.com: 地图配额都配置了吗?是这样的,一开始定位是会使用精准定位,这样获取的定位比较准确。如果说你的精准定位失效,会自动使用ip定位,这个定位精度就差一点。你这种情况一般就是精准定位失效
回复 DCloud_UNI_yuhe: 地图配额是配置了的,
回复 DCloud_UNI_yuhe: 但是线上版本直接拿不到经纬度
回复 9***@qq.com: 你看一下浏览器请求,哪个接口失效了,报错是啥
回复 DCloud_UNI_yuhe: 没有请求,就是卡在getlocation这一步了,没有报错,就是不动
回复 9***@qq.com: 就算getlocation也会有请求
回复 DCloud_UNI_yuhe: uni.getlocation是看不到请求的呀
回复 9***@qq.com: 我的也是,h5定位,腾讯SDK,相差1~2公里
现在升级到4.24以后,调用腾讯地图的 配置好了key和白名单 调用getlocation还是getLocation:fail translate coordinate system fail错误
你在哪家平台用的,web还是app,检查一下请求有没有报错的
回复 DCloud_UNI_yuhe: web 腾讯地图 调用uni.getlocation 返回errMsg: “getLocation:fail translate coordinate system fail”
回复 1***@qq.com: 你看一下浏览器的请求,有没有失效的
回复 DCloud_UNI_yuhe: 点开开发者工具,那有个网络,找一下里面请求腾讯地图失败的链接,看看有哪些
回复 DCloud_UNI_yuhe: ok了 根据提示调试好了 感谢
回复 1***@qq.com: 好的
回复 DCloud_UNI_yuhe: 获取到了经纬度 现在是定位到了日本了 本地获取的
回复 1***@qq.com: 切换一下坐标系呢?
回复 DCloud_UNI_yuhe: 俩都返回的一样
回复 DCloud_UNI_yuhe: 是第三方地图配置的问题吗
回复 1***@qq.com: 之前有过偏移的,但是没有偏移这么大的
回复 1***@qq.com: 可能是你开的vpn?走的ip的定位,定位到日本了?
回复 DCloud_UNI_yuhe: 没有呀也 我再调试调试看看
4.24,配置的web 高德地图,uni.chooseLocation时报getLocation:fail translate coordinate system fail错误
你好,看一下浏览器请求,看看有没有报错的,根据报错的请求接口,去高德地图后台看一下,是不是由于限额等原因导致请求失败
回复 DCloud_UNI_yuhe: 没有报错,也没限额,app这边没问题,只有web这边不行
回复 雨夜敬清秋: web和app无关啊,web和app又不是用的一个key。你不会是用的一个key吧。
回复 DCloud_UNI_yuhe: web和ios和android都是不同的key,刚刚发现android这边chooseLocation能定位但是无法加载出周边地址列表
回复 雨夜敬清秋: 有报错信息吗?
回复 DCloud_UNI_yuhe: ios这边也无法加载出周边列表,报错信息:TypeError: undefined is not an object (evaluating ‘this.$refs.nearListLoadmore.resetLoadmore’) __ERROR
内嵌到原生app webview中 ios定位正常 安卓出现经纬度偏差非常大的问题 文档写需要原生app对webview进行处理 请问具体是怎么处理
右下角的定位按钮按不到怎么解决
你好,右下角也没有定位按钮,你说的是哪个?
在uni-app中使用腾讯地图的地理位置服务时,确保正确配置和使用API Key是非常重要的。你提到的报错“未授权”通常意味着API Key配置不正确或者请求参数不符合要求。下面是一个基本的配置和使用腾讯地图API的代码示例,你可以根据这个示例检查你的代码。
首先,确保你已经在腾讯地图开发者平台申请了正确的API Key,并且该Key对应的应用有权限访问相关的API。
1. 配置uni-app项目
在manifest.json
中配置腾讯地图的API Key(注意,这里假设uni-app直接支持配置,实际上可能需要在腾讯地图SDK初始化时传入Key)。不过,通常uni-app使用地图服务是通过插件或直接在JS SDK中传入Key。
2. 使用腾讯地图JS SDK
由于uni-app支持在页面中直接引入和使用JavaScript SDK,你可以尝试以下步骤:
步骤1: 在页面中引入腾讯地图JS SDK
在你的页面<script>
标签内,动态加载腾讯地图的JS SDK,并传入你的API Key:
<script>
export default {
onLoad() {
const script = document.createElement('script');
script.src = `https://map.qq.com/api/gljs?v=1.exp&key=YOUR_API_KEY`; // 替换YOUR_API_KEY
script.onload = () => {
this.initMap();
};
document.head.appendChild(script);
},
methods: {
initMap() {
// 初始化地图,这里假设使用gcj02坐标系
const map = new TMap.Map(document.getElementById('mapContainer'), {
center: new TMap.LatLng(39.984120, 116.307484), // 默认中心点
zoom: 14, // 默认缩放级别
mapStyleId: 'style_default', // 默认地图样式
});
// 获取当前位置
const geolocation = new TMap.Geolocation({
getAddress: true, // 是否返回地址信息
});
geolocation.getCurrentPosition((data) => {
console.log(data);
if (data.status === 0) {
// 成功获取位置
map.setCenter(data.position);
} else {
// 定位失败
console.error(data.message);
}
});
},
},
};
</script>
步骤2: 在页面中添加地图容器
确保你的页面HTML中有一个用于显示地图的容器:
<template>
<view>
<div id="mapContainer" style="width: 100%; height: 500px;"></div>
</view>
</template>
注意
- 确保你的API Key没有过期,且对应的应用有权限访问腾讯地图的API。
- 检查你的网络请求是否被防火墙或代理服务器拦截。
- 如果你是在小程序中使用腾讯地图,配置和使用方式会有所不同,需要参考uni-app官方文档和腾讯地图小程序SDK文档。
以上代码示例提供了一个基本的框架,你可以根据需要进行调整。