РЕДАКТИРОВАТЬ: только что понял, что я передаю одну координату, а он ожидает массив. Проверим и обновим.
Нужно разместить модель на земле (воде).
Как я понял, относительные высоты (как relativeToGround
в KML) еще не реализованы. Итак, на данный момент лучшее решение — запросить у поставщика ландшафта высоту ландшафта в определенном месте и соответствующим образом отрегулировать высоту модели [1] (и чем-то обрабатывать изменение уровня детализации).
Вот простой пример для Sandcastle. Я просто пытаюсь получить высоту для местоположения. Я ожидаю, что Cesium.sampleTerrain
вернет promise
, который затем разрешается с помощью Cartographic
, height
измененного на высоту местности в этом месте. Но он просто сразу (синхронно?) разрешается с немодифицированным вводом (height == 100
).
var viewer = new Cesium.Viewer('cesiumContainer');
viewer.terrainProvider =
new Cesium.CesiumTerrainProvider({ url : '//cesiumjs.org/stk-terrain/tilesets/world/tiles' })
// new Cesium.CesiumTerrainProvider({ url : '//cesiumjs.org/tilesets/terrain/smallterrain' })
// new Cesium.VRTheWorldTerrainProvider({ url : '//www.vr-theworld.com/vr-theworld/tiles1.0.0/73/' })
// new Cesium.EllipsoidTerrainProvider()
;
viewer.camera.flyTo({
destination: Cesium.Cartesian3.fromRadians(2.5269731598108605, -0.669099684580548, 100)
, duration: 0
});
Cesium.sampleTerrain(viewer.terrainProvider, 11, viewer.camera.positionCartographic.clone())
.then(function(x) { console.log(x) })
;
- Что не так с кодом?
- Есть ли альтернативный подход?
Спасибо.