2015-02-03 9 views
6

Czy istnieje sposób na uzyskanie wysokości nad poziomem morza dla danej pozycji w CesiumJS? Próbowałem fun.globe.getHeight func, ale zwraca niezdefiniowane.Uzyskaj wysokość nad poziomem morza CesiumJS

//marker is a point on map. 
var marker = {latitude: 61.08658108795938, longitude: -99.64592791446208}; 
var height = scene.globe.getHeight(new Cesium.Cartographic(marker.longitude, marker.latitude));//undefined 

Dziękuję.

Odpowiedz

3

Do tego celu powinieneś użyć sampleTerrain. Oto przykład:

// Construct the default list of terrain sources. 
var terrainModels = Cesium.createDefaultTerrainProviderViewModels(); 

// Construct the viewer, with a high-res terrain source pre-selected. 
var viewer = new Cesium.Viewer('cesiumContainer', { 
    terrainProviderViewModels: terrainModels, 
    selectedTerrainProviderViewModel: terrainModels[1] // Select STK High-res terrain 
}); 

// Get a reference to the ellipsoid, with terrain on it. (This API may change soon) 
var ellipsoid = viewer.scene.globe.ellipsoid; 

// Specify our point of interest. 
var pointOfInterest = Cesium.Cartographic.fromDegrees(
    -99.64592791446208, 61.08658108795938, 5000, new Cesium.Cartographic()); 

// [OPTIONAL] Fly the camera there, to see if we got the right point. 
viewer.camera.flyTo({ 
    destination: ellipsoid.cartographicToCartesian(pointOfInterest, 
     new Cesium.Cartesian3()) 
}); 

// Sample the terrain (async) and write the answer to the console. 
Cesium.sampleTerrain(viewer.terrainProvider, 9, [ pointOfInterest ]) 
.then(function(samples) { 
    console.log('Height in meters is: ' + samples[0].height); 
}); 
0

Jest to alternatywa:

var marker= new Cesium.Cartesian3.fromDegrees(lon,lat, 0); 
markers.push(marker); 
var cartographicPositions = Cesium.Ellipsoid.WGS84.cartesianArrayToCartographicArray(markers); 
      var HeightCheck=setInterval(function(){ 
        if (cesiumTerrainProviderHeightmaps.ready) 
        { 
         clearInterval(HeightCheck); 

         var promise = Cesium.sampleTerrain(cesiumTerrainProviderHeightmaps, 11, cartographicPositions); 
         Cesium.when(promise, function(cartographicPositions) { 
           // you got the altitudes 

          }); 
        } else { 
         // "Waiting for height data of terrain...." 
        } 
       },1000); 
Powiązane problemy