#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. Да, код, который вы добавили, близок, но не совсем правильный. Я отредактировал свой ответ с помощью альтернативной версии, чтобы попробовать.