Skip to content

添加 CSS2D 广告牌

loading

添加 CSS2D 图标,与 20.添加图标类似,只不过将精灵换成了 CSS2DObject

关于添加 CSS2D 对象,见:https://threejs.org/docs/?q=css#examples/zh/renderers/CSS2DRenderer

TIP

相比添加精灵图标,CSS2D 通过在地图中添加 HTML 标签方式增加地图元素,拾取、悬停等操作更加简单,但缺点是速度较慢,特别是需要添加大量标签时尤为明显。

ts
// 添加CSS2D渲染器
const cssRendererDiv = document.getElementById("cssrenderer");
const css2dRenderer = new CSS2DRenderer({ element: cssRendererDiv });
viewer.addEventListener("update", () => {
  css2dRenderer.render(viewer.scene, viewer.camera);
});

// 添加CSS2D图标
function addIcon(map, lonlat) {
  const position = map.geo2map(lonlat);
  const label = document.createElement("div");
  label.className = "billboard";
  label.title = `经纬度: ${lonlat.x.toFixed(2)}, ${lonlat.y.toFixed(2)}`;
  const labelObject = new CSS2DObject(label);
  labelObject.center.set(0.5, 1);
  labelObject.position.copy(position);
  map.add(labelObject);
}


Released under the MIT License.