wlzboy
2025-09-24 62a079a15b46925283581f6caaf631b5a4558927
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// 百度地图配置
window.BMapConfig = {
  // 百度地图API Key(使用项目中已有的API Key)
  key: 'n5z5pKfAnaP3fYMR4RJOAQsR1wQ2avAn',
  // 地图版本
  version: '3.0',
  // 默认中心点(北京)
  center: [116.404, 39.915],
  // 默认缩放级别
  zoom: 15
};
 
// 动态加载百度地图API
(function() {
  // 检查是否已经加载过百度地图API
  if (window.BMap) {
    console.log('百度地图API已存在');
    return;
  }
  
  // 确保DOM已加载完成
  function loadBMapScript() {
    // 检查document.head是否存在
    if (!document.head) {
      console.error('document.head不存在,延迟加载百度地图API');
      setTimeout(loadBMapScript, 100);
      return;
    }
    
    // 设置回调函数
    window.initBMap = function() {
      console.log('百度地图API加载成功');
      // 触发自定义事件,通知其他组件地图已加载
      window.dispatchEvent(new CustomEvent('bmapLoaded'));
    };
    
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = `https://api.map.baidu.com/api?v=${window.BMapConfig.version}&ak=${window.BMapConfig.key}&callback=initBMap`;
    script.async = true;
    script.onload = function() {
      console.log('百度地图脚本加载完成');
    };
    script.onerror = function(error) {
      console.error('百度地图API加载失败:', error);
      // 触发错误事件
      window.dispatchEvent(new CustomEvent('bmapError', { detail: error }));
    };
    
    try {
      document.head.appendChild(script);
      console.log('百度地图脚本已添加到页面');
    } catch (error) {
      console.error('添加百度地图脚本失败:', error);
    }
  }
  
  // 等待DOM加载完成
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', loadBMapScript);
  } else {
    loadBMapScript();
  }
})();