У меня есть приложение, которое отображает трехмерную карту города и кнопку «Добавить здание».Почему Cesium viewer не отображает модель, когда я ее добавляю?
Когда пользователь нажимает эту кнопку, на карте должна быть вставлена модель здания.
Но это не так. Я вижу маркер выбора в правильном месте, но не фактическое здание.
Метод 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, поэтому неработающая ссылка не является причиной.
Буду признателен, если бы вы сказали мне, что мне нужно изменить в моей программе, чтобы добавить здания. Исходный код и инструкции по строительству доступны here. В приложении используется AngularJS, возможно, цезий и угловые мешают.
Это video показывает, как воспроизвести эту ошибку.
Update 1: Когда я открываю страницу, я иногда (но не всегда) получает следующее исключение (если включить остановку на неперехваченных исключениях):
Ваш код модели в порядке, на самом деле, если вы вставляете метод 1 в [Цезиевый песочный замок] (http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html) и исправляете URL-адрес, модель загружается точно так же, как и ожидается. Проблема заключается в ошибке в другом месте вашего кода, и вы просто видите, что она проявляется в виде модели, которая не отображается. –
Есть ли ошибки, которые появляются в веб-консоли? (F12, вкладка консоли) – emackey
@emackey Да. См. Мое обновление 1. –