“ReferenceError: AMap is not defined“

问题

笔者进行web开发,引入高德地图,控制台报错

"ReferenceError: AMap is not defined"

详细问题

vue.runtime.esm.js:4662 [Vue warn]: Error in mounted hook: "ReferenceError: AMap is not defined"

found in

---> <Map> at src/views/Map.vue
       <ElMain> at packages/main/src/main.vue
         <ElContainer> at packages/container/src/main.vue... (1 recursive calls)
           <Home> at src/views/Manage.vue
             <App> at src/App.vue
               <Root>
vue.runtime.esm.js:3104 ReferenceError: AMap is not defined
    at VueComponent.mounted (cjs.js?!./node_modul…cript&lang=js:28:20)
    at invokeWithErrorHandling (vue.runtime.esm.js:3072:61)
    at callHook$1 (vue.runtime.esm.js:4087:13)
    at Object.insert (vue.runtime.esm.js:4480:13)
    at invokeInsertHook (vue.runtime.esm.js:6999:38)
    at VueComponent.patch [as __patch__] (vue.runtime.esm.js:7213:9)
    at Vue._update (vue.runtime.esm.js:3824:25)
    at VueComponent.updateComponent (vue.runtime.esm.js:3930:16)
    at Watcher.get (vue.runtime.esm.js:3501:33)
    at Watcher.run (vue.runtime.esm.js:3577:30)

在这里插入图片描述

解决方案

将代码

this.map = new AMap.Map("container", {
    center: [121.548181, 29.806906],
    zoom: 15,
    resizeEnable: true,
});

修改为

setTimeout(() = >{
    this.map = new AMap.Map("container", {
        // center: [101.77, 36.62],
        center: [121.548181, 29.806906],
        zoom: 15,
        resizeEnable: true,
    });
},1000);

产生原因

错误信息 “ReferenceError: AMap is not defined” 表明在代码中使用了 AMap 对象,但该对象未被正确定义,导致引用错误。这通常是因为在代码执行时,AMap 对象尚未加载或者未正确引入所致。
异步加载问题: 在 Vue 生命周期的 mounted 钩子中直接初始化 AMap 对象,但是可能由于异步加载的原因,AMap 对象尚未被完全加载进来,导致引用错误。

解决原因

解决方法是在初始化 AMap 对象之前等待一段时间,确保 AMap 对象已经完全加载。这可以通过使用 setTimeout 函数来延迟执行初始化代码。

参考文献

vue项目使用高德地图时报错:AMap is not defined解决办法
产生原因与解释原因部分 部分内容参考chatgpt

原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈
请添加图片描述

根据你提供的引用内容,当出现"Uncaught ReferenceError: AMap is not defined"错误时,意味着代码中没有找到定义的AMap对象。这可能是由于以下几个原因导致的: 1. 引入高德地图API的顺序不正确:确保在使用AMap对象之前正确引入了高德地图的JavaScript文件。例如,在HTML文件中,应该先引入高德地图的JavaScript文件,然后再引入使用AMap对象的代码。 2. 高德地图API文件加载失败:检查网络连接是否正常,确保能够成功加载高德地图的JavaScript文件。可以通过在浏览器的开发者工具中查看网络请求来确认文件是否成功加载。 3. 高德地图API文件路径错误:检查引入高德地图的JavaScript文件的路径是否正确。确保文件路径与实际文件的位置相匹配。 4. 高德地图API文件版本不兼容:如果使用的高德地图API文件版本与代码中使用的API版本不兼容,可能会导致AMap对象未定义的错误。请确保使用的高德地图API文件与代码兼容。 以下是一个示例代码,演示了如何正确引入高德地图API并使用AMap对象: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>使用高德地图</title> <script src="https://webapi.amap.com/maps?v=1.4.15&key=your-api-key"></script> <script> // 在地图加载完成后执行代码 function initMap() { var map = new AMap.Map('map-container', { center: [116.397428, 39.90923], zoom: 13 }); // 其他地图相关操作 } </script> </head> <body> <div id="map-container" style="width: 100%; height: 400px;"></div> <script> // 在页面加载完成后执行代码 window.onload = function() { // 确保高德地图API已加载完成 if (typeof AMap !== 'undefined') { initMap(); } else { console.error('高德地图API加载失败'); } }; </script> </body> </html> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞滕人生TYF

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

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

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

打赏作者

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

抵扣说明:

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

余额充值