2015-07-24 5 views
2

У меня есть приложение, которое отображает трехмерную карту города и кнопку «Добавить здание».Почему 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: Когда я открываю страницу, я иногда (но не всегда) получает следующее исключение (если включить остановку на неперехваченных исключениях):

Error

+0

Ваш код модели в порядке, на самом деле, если вы вставляете метод 1 в [Цезиевый песочный замок] (http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html) и исправляете URL-адрес, модель загружается точно так же, как и ожидается. Проблема заключается в ошибке в другом месте вашего кода, и вы просто видите, что она проявляется в виде модели, которая не отображается. –

+1

Есть ли ошибки, которые появляются в веб-консоли? (F12, вкладка консоли) – emackey

+0

@emackey Да. См. Мое обновление 1. –

ответ

Смежные вопросы