因为el-dialog默认是懒加载的,地图容器在对话框显示前可能不存在。解决方案是在对话框打开时初始化地图:
   在el-dialog上添加 @open="handleDialogOpen" 事件

代码:

handleDialogOpen() {
      this.$nextTick(() => {
        if (!this.mapRef) {
          this.initMap();
        }
      });
    },

    initMap() {
      console.log('initMap 方法被调用');
      try {

        const map = new window.AMap.Map('map-container', {
          zoom: 11,
          center: [121.4737, 31.2304],
          viewMode: '2D',
        });
        console.log('地图实例创建成功');
        this.mapRef = map;

        map.on('complete', () => {
          console.log('地图资源加载完成');
        });
      } catch (error) {
        console.error('地图初始化失败:', error);
        this.errorMessage = '地图加载失败,请刷新页面重试';
      }
    }
    ,

html部分:

最终展示:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐