CesiumJS использует гибридную архитектуру визуализации, в которой один и тот же набор данных может быть отображён в трёх режимах: глобус (3D), 2D карта и Columbus View (2.5D). 2D-режим в рамках CesiumJS представляет собой ортографическую проекцию всей сцены на плоскость с сохранением тайловой структуры, координатной модели и механизмов рендеринга слоёв.
В 2D-режиме виртуальный глобус перестаёт быть сферой и трансформируется в плоскую карту. При этом внутренняя модель данных не меняется: используется тот же набор тайлов, те же источники изображений и та же система координат WGS84.
Ключевой принцип заключается в том, что:
Основное отличие от 3D заключается не в данных, а в способе их проецирования.
Переход между режимами осуществляется через морфинг сцены:
viewer.scene.morphTo2D(0.0);
Параметр задаёт длительность перехода. Нулевое значение означает мгновенное переключение.
Возврат в 3D:
viewer.scene.morphTo3D(0.0);
и переход в Columbus View:
viewer.scene.morphToColumbusView(0.0);
Морфинг не пересоздаёт сцену, а изменяет матрицы камеры и параметры проекции.
В 2D-режиме камера перестаёт использовать перспективную проекцию. Вместо этого применяется ортографическая матрица.
Основные особенности:
Координатная система остаётся географической (долгота/широта), но отображается в декартовой 2D-плоскости через проекцию Web Mercator.
Визуализация основана на проекции Web Mercator (EPSG:3857). Она преобразует сферические координаты в плоскость:
Такой подход обеспечивает совместимость с тайловыми картами (XYZ, WMTS, TMS).
Тайловый движок остаётся идентичным 3D-режиму. Изменяется только способ их отображения.
Особенности:
При увеличении масштаба происходит переход на более детализированные тайлы, при уменьшении — агрегация.
Все типы слоёв сохраняются:
Однако рельеф в классическом виде не отображается. Высотные данные либо игнорируются, либо визуально схлопываются в плоскость.
Пример добавления слоя:
viewer.imageryLayers.addImageryProvider(
new Cesium.IonImageryProvider({ assetId: 2 })
);
Линии, полигоны и точки проецируются на плоскость без изменения структуры.
2D-режим сохраняет экранную ориентацию:
Это делает 2D-режим особенно стабильным для подписей и маркеров.
Камера управляется в пределах плоскости:
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(30.5, 50.4, 1500000)
});
При этом высота камеры определяет масштаб отображения карты. Чем меньше высота — тем ближе zoom.
Ограничения:
Навигация в 2D сводится к двум операциям:
Колёсико мыши изменяет масштаб нелинейно, приближая или отдаляя карту.
В отличие от 3D, отсутствует параллакс-эффект, что упрощает восприятие больших картографических данных.
2D-режим может быть более производительным в ряде сценариев:
Однако производительность зависит от количества тайлов и векторных сущностей, а не от режима отображения как такового.
Несмотря на функциональность, существуют фундаментальные ограничения:
Некоторые 3D-специфичные эффекты полностью отключаются или упрощаются:
Picking объектов в 2D упрощается, так как сцена фактически становится двумерной проекцией.
const picked = viewer.scene.pick(windowPosition);
Объекты выбираются на основе экранных координат без необходимости пересечения с 3D-геометрией.
Внутренне CesiumJS переключает:
PerspectiveFrustum →
OrthographicFrustum;Это обеспечивает единый pipeline рендеринга при смене режимов.
2D-представление часто используется как:
Его основное назначение — снижение когнитивной нагрузки при работе с плотными данными и обеспечение высокой читаемости пространственной информации.