h5高德地图定位与Audio标签冲突

看到此文说明你也遇见此问题了,在ios设备使用(高德地图、百度地图)定位,如果在页面中有audio标签则会出现定位失败要么就是音频无法播放,此问题已和官方证实 是冲突问题,暂无解决方案。
因为高德地图也是基于原生定位开发的,原生定位navigator.geolocation与audio也会出现冲突问题,相关资料比较少

唯有腾讯地图在浏览器中不会出现此问题,但是H5使用腾讯地图嵌入小程序中,结果腾讯官方又把自己给限制了(在小程序中嵌入H5使用web腾讯api定位,请求地址被限制了),如果不需要嵌入小程序中,则忽略
以下解说针对嵌入小程序中做解决方案:

🚀 用两套定位模式进行区分

一、在微信浏览器环境中

在微信环境中我们采用weixin-js-sdk进行定位,也就是公众号的定位方式,需要开通公众号并进行对应配置
基于公众号定位,就不会出现与Audio冲突问题

  1. 下载jssdk依赖
cnpm i weixin-js-sdk --save
  1. 进行公众号配置
// 以下配置数据均来自后端,请求后端接口需要将url传给后端(location.href.split('#')[0]),目的是微信检测地址是否授权了
 wx.config({
  debug: false,
  appId: '',
  timestamp: '',
  nonceStr: '',
  signature: '',
  jsApiList: []
});
  1. 初始化及定位
 wx.ready(function () {
    wx.getLocation({
         type: 'gcj02',
          success: function (res) {
            console.log(res, '定位信息')
          },
          cancel: function () {
            showToast('定位授权失败');
          }
     });
 })
  1. 本地使用edge测试定位,上线后必须去公众号配置js安全域名,否则将无法使用
    在这里插入图片描述

二、在其他环境中

在其它环境中,我们采用腾讯地图定位,因为高德、百度在IOS浏览器中还是会出现与音频冲突问题

  1. 引入腾讯JS
// html中引入腾讯sdkJS,或者直接下载js当前页面引入
<script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js "></script>
  1. 定位
 let geolocation = new qq.maps.Geolocation("腾讯地图Key", "test_map");
 let options = { timeout: 10000 };
  //精确定位
  geolocation.getLocation((point) => {
    console.log(point, '定位数据')
  }, (err) => {
   console.log("定位失败", err)
  }, options)

以上就是总体解决思路

1、微信环境中使用weixin-jssdk定位
2、其它环境中使用腾讯定位

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端阿皓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值