Загрузить ФАЙЛ Czml в CesiumJS

#javascript #cesium #czml

Вопрос:

Я изо всех сил пытаюсь загрузить свой файл czml, не копируя его содержимое внутри моего JS-скрипта в Cesium. Я хотел бы загрузить файл, используя его URL, но мне не удается это сделать.

 var czml = "test_trace.czml";
var viewer = new Cesium.Viewer("cesiumContainer", {terrainProvider: Cesium.createWorldTerrain(), baseLayerPicker: false, shouldAnimate: true,});

viewer.dataSources.add(Cesium.CzmlDataSource.load(czml)).then(function (ds) {
    viewer.trackedEntity = ds.entities.getById("path");
});
 

где czml — это не содержимое файла, а сам файл. Есть идеи?

Большое спасибо

Ответ №1:

РЕДАКТИРОВАТЬ: к исходному вопросу был добавлен фрагмент кода, содержащий небольшую ошибку. .then Предложение требует обещания, которое возвращается, .load но не возвращается .add . Вместо этого я рекомендую эту формулировку:

 Cesium.CzmlDataSource.load(czml).then(function (ds) {
    viewer.dataSources.add(ds);
    viewer.trackedEntity = ds.entities.getById("path");
});
 

В приведенном выше .load примере возвращает обещание и .then ожидает разрешения обещания. Затем разрешенный источник данных добавляется в средство просмотра, и выбирается отслеживаемый объект. Вот живая демонстрация с отслеживанием.


Оригинальный ответ:

Убедитесь czml , что это строка, содержащая URL. Кроме того, результирующий источник данных необходимо добавить в средство просмотра, чтобы он стал видимым. Проверьте консоль на наличие ошибок, чтобы узнать, был ли URL-адрес недействительным или недоступным для приложения.

Вот живая демонстрация.

Критические строки в этой демонстрации:

 var viewer = new Cesium.Viewer("cesiumContainer", {
  shouldAnimate: true,
});

viewer.dataSources.add(
  Cesium.CzmlDataSource.load("../SampleData/simple.czml")
);
 

В этом случае веб-сервер предлагает файл CZML по указанному относительному URL.

Комментарии:

1. Я отредактировал свой вопрос с помощью своего текущего кода. Я думаю, что у меня нет правильного метода для вызова URL-адреса моего файла czml. У вас есть идея?

2. Да, код, который вы добавили, близок, но не совсем правильный. Я отредактировал свой ответ с помощью альтернативной версии, чтобы попробовать.