vue3在高德地图首次加载成功后,第二次加载容器消失,后续加载抛出map实例为空问题解决

vue3在高德地图首次加载成功后,第二次加载容器消失,后续加载抛出map实例为空问题解决

原先加载方式为JS API 引入地图

interface HTMLScriptElement1 extends HTMLScriptElement {
  _version: string;
  _key: string;
}

export function loadAMap(
  v: string = '2.0',
  key: string = '',
  pluginStr: string = ''
) {
  return new Promise(function (resolve, reject) {
    const script = document.createElement('script') as HTMLScriptElement1;
    script.type = 'text/javascript';
    script.id = 'amap';
    script.src = `https://webapi.amap.com/maps?v=${v}&key=${key}&plugin=AMap.ControlBar,AMap.LineSearch,AMap.StationSearch,AMap.PolylineEditor,AMap.PolygonEditor,AMap.CircleEditor,AMap.AutoComplete,AMap.AutoComplete,AMap.DistrictSearch,AMap.PlaceSearch,AMap.MouseTool,${pluginStr}&callback=initAMap`;
    script.onerror = reject;
    script._version = v;
    script._key = key;
    document.head.appendChild(script);
    window.initAMap = () => {
      resolve(window.AMap);
    };
  });
}

这里的加载方法在其他项目里都是正常了,这次放入微服务里运行的时候发现多次加载地图会出现各种问题,采用新的JS API 2.0 版本中的JSAPI Loader进行加载

import AMapLoader from '@amap/amap-jsapi-loader';
export function loadAMap() {
  return new Promise(function (resolve, reject) {
    AMapLoader.load({
      key: '', // 申请好的Web端开发者Key,首次调用 load 时必填
      version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
      plugins: [
        'AMap.ControlBar',
        'AMap.LineSearch',
        'AMap.StationSearch',
        'AMap.PolylineEditor',
        'AMap.PolygonEditor',
        'AMap.CircleEditor',
        'AMap.AutoComplete',
        'AMap.AutoComplete',
        'AMap.DistrictSearch',
        'AMap.PlaceSearch',
        'AMap.MouseTool',
      ], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
    })
      .then((AMap: any) => {
        window.AMap = AMap
        resolve(window.AMap);
      })
      .catch((e: any) => {
        console.log(e);
        reject();
      });
  });
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值