
[
  {
    "name": "USS Abraham Lincoln CSG",
    "type": "Aircraft Carrier Strike Group",
    "lat": 12.5,
    "lng": 50.0,
    "region": "Arabian Sea SE of Socotra"
  },

  {
    "name": "Destroyer (Gulf of Oman)",
    "type": "Destroyer",
    "lat": 25.2,
    "lng": 58.0,
    "region": "Gulf of Oman"
  },
  {
    "name": "Coast Guard Ship 1 (Gulf of Oman)",
    "type": "Coast Guard",
    "lat": 25.4,
    "lng": 58.2,
    "region": "Gulf of Oman"
  },
  {
    "name": "Coast Guard Ship 2 (Gulf of Oman)",
    "type": "Coast Guard",
    "lat": 25.0,
    "lng": 57.8,
    "region": "Gulf of Oman"
  },

  {
    "name": "Destroyer (Northern Persian Gulf)",
    "type": "Destroyer",
    "lat": 26.5,
    "lng": 51.0,
    "region": "Persian Gulf"
  },
  {
    "name": "Frigate 1 (Persian Gulf)",
    "type": "Frigate",
    "lat": 26.7,
    "lng": 50.6,
    "region": "Persian Gulf"
  },
  {
    "name": "Frigate 2 (Persian Gulf)",
    "type": "Frigate",
    "lat": 27.0,
    "lng": 50.2,
    "region": "Persian Gulf"
  },
  {
    "name": "Frigate 3 (Persian Gulf)",
    "type": "Frigate",
    "lat": 26.3,
    "lng": 50.8,
    "region": "Persian Gulf"
  },
  {
    "name": "Auxiliary Ship 1",
    "type": "Auxiliary",
    "lat": 26.0,
    "lng": 51.2,
    "region": "Persian Gulf"
  },
  {
    "name": "Auxiliary Ship 2",
    "type": "Auxiliary",
    "lat": 25.8,
    "lng": 51.5,
    "region": "Persian Gulf"
  },
  {
    "name": "Auxiliary Ship 3",
    "type": "Auxiliary",
    "lat": 26.2,
    "lng": 50.9,
    "region": "Persian Gulf"
  }
]

卡塔尔

Al Udeid Air Base

Camp As Sayliyah

🇧🇭 巴林

Naval Support Activity Bahrain

🇰🇼 科威特

Camp Arifjan

Ali Al Salem Air Base

Camp Buehring

🇦🇪 阿联酋

Al Dhafra Air Base

🇸🇦 沙特阿拉伯

Prince Sultan Air Base

Eskan Village

🇮🇶 伊拉克

Al Asad Airbase

Erbil Air Base

Baghdad Diplomatic Support Center

Camp Taji

Ain al-Asad (部分文献与 Al Asad 同义但可单列展示)

🇸🇾 叙利亚（驻点）

Al-Tanf Garrison

Rmelan Landing Zone

Shaddadi Base

Conoco Gas Field Base

🇯🇴 约旦

Muwaffaq Salti Air Base

🇹🇷 土耳其

Incirlik Air Base

Kürecik Radar Station

🇮🇱 以色列（合作设施）

Nevatim Air Base (美军设施区)

Ramon Air Base (协作区)

🇴🇲 阿曼

Thumrait Air Base

Masirah Air Base

🇪🇬 埃及（区域支援）

West Cairo Air Base

🇩🇯 吉布提（非波斯湾但中东行动关键）

地图基础设置

中心：

center: [52.5, 26.5]
zoom: 5.2
style: "mapbox://styles/mapbox/dark-v11"
二、27 个基地完整 JSON 数据
[
  { "id": 1, "name": "Al Udeid Air Base", "country": "Qatar", "lat": 25.117, "lng": 51.314 },
  { "id": 2, "name": "Camp As Sayliyah", "country": "Qatar", "lat": 25.275, "lng": 51.520 },

  { "id": 3, "name": "Naval Support Activity Bahrain", "country": "Bahrain", "lat": 26.236, "lng": 50.608 },

  { "id": 4, "name": "Camp Arifjan", "country": "Kuwait", "lat": 28.832, "lng": 47.799 },
  { "id": 5, "name": "Ali Al Salem Air Base", "country": "Kuwait", "lat": 29.346, "lng": 47.520 },
  { "id": 6, "name": "Camp Buehring", "country": "Kuwait", "lat": 29.603, "lng": 47.456 },

  { "id": 7, "name": "Al Dhafra Air Base", "country": "UAE", "lat": 24.248, "lng": 54.547 },

  { "id": 8, "name": "Prince Sultan Air Base", "country": "Saudi Arabia", "lat": 24.062, "lng": 47.580 },
  { "id": 9, "name": "Eskan Village", "country": "Saudi Arabia", "lat": 24.774, "lng": 46.738 },

  { "id": 10, "name": "Al Asad Airbase", "country": "Iraq", "lat": 33.785, "lng": 42.441 },
  { "id": 11, "name": "Erbil Air Base", "country": "Iraq", "lat": 36.237, "lng": 43.963 },
  { "id": 12, "name": "Baghdad Diplomatic Support Center", "country": "Iraq", "lat": 33.315, "lng": 44.366 },
  { "id": 13, "name": "Camp Taji", "country": "Iraq", "lat": 33.556, "lng": 44.256 },
  { "id": 14, "name": "Ain al-Asad", "country": "Iraq", "lat": 33.800, "lng": 42.450 },

  { "id": 15, "name": "Al-Tanf Garrison", "country": "Syria", "lat": 33.490, "lng": 38.618 },
  { "id": 16, "name": "Rmelan Landing Zone", "country": "Syria", "lat": 37.015, "lng": 41.885 },
  { "id": 17, "name": "Shaddadi Base", "country": "Syria", "lat": 36.058, "lng": 40.730 },
  { "id": 18, "name": "Conoco Gas Field Base", "country": "Syria", "lat": 35.336, "lng": 40.295 },

  { "id": 19, "name": "Muwaffaq Salti Air Base", "country": "Jordan", "lat": 32.356, "lng": 36.259 },

  { "id": 20, "name": "Incirlik Air Base", "country": "Turkey", "lat": 37.002, "lng": 35.425 },
  { "id": 21, "name": "Kurecik Radar Station", "country": "Turkey", "lat": 38.354, "lng": 37.794 },

  { "id": 22, "name": "Nevatim Air Base", "country": "Israel", "lat": 31.208, "lng": 35.012 },
  { "id": 23, "name": "Ramon Air Base", "country": "Israel", "lat": 30.776, "lng": 34.666 },

  { "id": 24, "name": "Thumrait Air Base", "country": "Oman", "lat": 17.666, "lng": 54.024 },
  { "id": 25, "name": "Masirah Air Base", "country": "Oman", "lat": 20.675, "lng": 58.890 },

  { "id": 26, "name": "West Cairo Air Base", "country": "Egypt", "lat": 30.915, "lng": 30.298 },

  { "id": 27, "name": "Camp Lemonnier", "country": "Djibouti", "lat": 11.547, "lng": 43.159 }
]
三、状态模型
type BaseStatus = "operational" | "damaged" | "attacked"

interface BaseAttackStatus {
  id: number
  status: BaseStatus
  damageLevel: 1 | 2 | 3
  attackTime?: number
}
四、可视化规则
1️⃣ 状态颜色

operational → 绿色稳定点

damaged → 橙色闪烁

attacked → 红色脉冲扩散动画

2️⃣ 红色脉冲动画

2 秒循环

扩散半径 0 → 40px

opacity 1 → 0

3️⃣ 伊朗攻击源

固定发射源坐标：

const IRAN_SOURCE = [51.3890, 35.6892] // Tehran

攻击动画使用抛物线 LineLayer：

颜色：#ff0000

线宽：2px

飞行时间：1200ms

五、大屏右侧态势面板

显示：

总基地数：27

被袭击：X

严重损毁：X

中度损毁：X

轻度损毁：X

每 5 秒自动刷新统计。

六、性能要求

使用 requestAnimationFrame










禁止重复创建 marker

所有动画走 WebGL 图层

禁止 DOM 动画



git代码更新:git fetch origin && git reset --hard origin/master
前端发版：npm  run build
后端发版：pm2 restart 3