У меня есть приложение, которое отображает 3D-карту города и кнопку "Добавить здание".
Когда пользователь нажимает эту кнопку, на карту должна быть вставлена модель здания.
Но это не так - я вижу маркер выбора в нужном месте, но не фактическое здание.
Способ 1
Я добавляю здание, используя следующий код (см. файл src\main\resources\static\js\myapp.js
исходного кода):
function addBuilding() {
var position = Cesium.Cartesian3.fromDegrees(132.159633, 43.350116, 0.);
createModel('/models/CesiumAir/Cesium_Air.gltf', position);
}
function createModel(url, position) {
var heading = Cesium.Math.toRadians(135);
var pitch = 0;
var roll = 0;
var orientation = Cesium.Transforms.headingPitchRollQuaternion(
position, heading, pitch, roll);
var entity = viewer.entities.add({
name : url,
position : position,
orientation : orientation,
model : {
uri : url,
minimumPixelSize : 128
}
});
console.log("entity.model = " + entity.model);
viewer.selectedEntity = entity;
}
Это не сработало, поэтому я попробовал другой метод.
Метод 2
var scene = viewer.scene;
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Cartesian3.fromDegrees(132.159633, 43.350116, 0.0));
var primitive = Cesium.Model.fromGltf({
url : '/models/CesiumAir/Cesium_Air.gltf',
modelMatrix : modelMatrix,
minimumPixelSize : 128,
appearance : new Cesium.DebugAppearance({
attributeName : 'normal'
})
});
scene.primitives.add(primitive);
Это тоже не сработало.
Если я открою URL-адрес http://localhost:8080/models/CesiumAir/Cesium_Air.gltf
в браузере, я увижу некоторый вывод JSON, поэтому неработающая ссылка не является причиной.
Я был бы признателен, если бы вы сказали мне, что мне нужно изменить в моей программе, чтобы добавление зданий работало. Исходный код и инструкции по сборке доступны здесь. Приложение использует AngularJS, возможно Cesium и Angular как-то мешают.
В этом видео показано, как воспроизвести эту ошибку.
Обновление 1: когда я открываю страницу, я иногда (но не всегда) получаю следующее исключение (когда я разрешаю останавливать необработанные исключения):