关于 cobejs
cobejs 是一项使用 cobe 构建轻量交互式 WebGL 地球的技能,面向网页开发者。它提供旋转、标记和画布配置方面的指导,适用于页面装饰与交互展示。
主要功能
- 01使用 cobe 配置 WebGL 地球
- 02旋转与外观选项
- 03位置标记
- 04暂停与销毁实例
- 05响应式画布和 DPR 指导
适用场景
- 01在首屏或关于页面添加地球
- 02以地球标记展示地点
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mengto/ skills --skill cobejs安装后在 Claude Code 中输入/cobejs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
REFERENCES.mddemo/index.htmlPROMPT.md详细介绍
cobe.js — 轻量级 WebGL 地球仪技能
适用场景
- 在首屏或关于页面展示“旋转的地球仪”/位置标记
- 想要一个小巧、专注的地球仪库(而非完整的 three.js)
- 以最少的配置实现装饰性与交互性(标记、旋转)
主要 API/模式
- 核心用法:
import createGlobe from "cobe"const globe = createGlobe(canvas, { ...options, onRender(state) { ... } })
- 重要选项(常用):
devicePixelRatio、width、heightphi、theta(旋转角度)scale、dark、diffusebaseColor、markerColor、glowColormarkers: [{ location: [lat, lon], size, color? }]
- 生命周期:
globe.toggle()暂停 RAFglobe.destroy()移除实例
常见问题
- Canvas 尺寸不匹配
- 设置 CSS 尺寸,并根据 DPR 缩放 canvas 的
width/height。
- 设置 CSS 尺寸,并根据 DPR 缩放 canvas 的
- 窗口大小改变后未更新
- 重新计算
width/height,然后重新创建实例或更新参数。
- 重新计算
- 移动设备上的 DPR 过高
- 将 DPR 限制在 1–2。
快速示例:带标记的响应式地球仪
import createGlobe from "cobe";
const canvas = document.getElementById("cobe");
let phi = 0;
function setup() {
const rect = canvas.getBoundingClientRect();
const dpr = Math.min(window.devicePixelRatio, 2);
canvas.width = Math.round(rect.width * dpr);
canvas.height = Math.round(rect.height * dpr);
const globe = createGlobe(canvas, {
devicePixelRatio: dpr,
width: canvas.width,
height: canvas.height,
phi: 0,
theta: 0.2,
dark: 0,
diffuse: 1.2,
scale: 1,
mapSamples: 16000,
mapBrightness: 6,
baseColor: [0.2, 0.2, 0.25],
glowColor: [1, 1, 1],
markerColor: [0.8, 0.5, 1],
markers: [{ location: [1.3521, 103.8198], size: 0.08 }],
onRender: (state) => {
state.phi = phi;
phi += 0.01;
},
});
return globe;
}
let globe = setup();
window.addEventListener("resize", () => {
globe.destroy();
globe = setup();
});
需要向用户确认
- 地球仪的尺寸和位置(首屏、版块、卡片)?
- 标记位置和颜色(是否与品牌风格一致)?
- 交互需求(拖动旋转,还是自动旋转)?
评论
支持 Markdown