Ground
Ground类包含指定如何在SceneView中显示地面的属性。它包含一个layers属性,它是一个ElevationLayer的集合,定义了地图表面的海拔或地形。
在一个地图实例中,使用世界高程服务的默认地面可以方便地通过ground属性进行初始化:
var map = new Map({
basemap: "topo-vector",
ground: "world-elevation"
});
当需要地形和水深值时,可以使用TopoBathy 3D服务:
var map = new Map({
basemap: "topo-vector",
ground: "world-topobathymetry"
});
当没有可用的基本地图时,地面在默认情况下显示一个网格:
这可以通过在表面上设置颜色来改变:
map.ground.surfaceColor = '#004C73';
const map = new Map({
basemap: "topo-vector",
// ground: "world-elevation"
ground: "world-topobathymetry"
});
const view = new SceneView({
container: 'mapDivRef',
map: map,
});
map.ground.surfaceColor = '#004C73';
如果场景中包含地下数据,降低地面的不透明度以使其能够穿透地面:
map.ground.opacity = 0.4;
属性概述
layers:一组高程层,定义了构成地面的高程或地形。
官网案列
const map = new Map({
basemap: "topo-vector",
// ground: "world-elevation"
// ground: "world-topobathymetry"
});
const view = new SceneView({
container: 'mapDivRef',
map: map,
});
var layer = new ElevationLayer({
url: "//elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"
});
map.ground.layers.add(layer);
一组高程层,定义了构成地面的高程或地形。当高程层被添加到地面上时,表面的地形变化将以3D方式呈现,就像它们在现实世界中出现一样。
当层集合为空时,地面表面是平的。
loaded:指示实例是否已加载。当为true时,可以访问对象的属性。一个Ground被认为是已加载的,当它的层被完全创建,但还没有加载。默认值为false。
loadError:如果加载时发生错误,则返回错误对象。默认值为null。
loadStatus:表示加载操作的状态。
loadWarnins:加载时发生的警告列表。
navigationConstraint:指定相对于地面的用户导航约束。默认值是:stay-above,约束的类型。从4.8开始拥有。它可以是下列情况之一:
stay-above:用户只能在地面上导航。
none:用户可以在地面上下导航。
opacity:不透明度的地面,包括表面默认颜色和基本地图(没有参考层)。默认值是1
surfaceColor:基本地图下面显示的地面的颜色。默认值为null。
map.ground.surfaceColor = '#004C73';
map.ground.opacity = 0.8;
//map.ground.navigationConstraint='stay-above';
view.when(function () {
console.log(map.ground.loadError);
console.log(map.ground.loadStatus);
console.log(map.ground.loadWarnings);
console.log(map.ground.surfaceColor);
console.log(map.ground.opacity);
//console.log(map.ground.navigationConstraint)
});
方法概述
cancleLoad():如果load()操作已经在进行中,则取消它。
clone():创建此对象的深度克隆。
createElevationSampler():为给定范围创建一个高程采样器,通过查询地面层的高程数据并将其缓存,以便以后可以快速采样。
destroy():破坏地面和它的图层。
fromJSON():创建这个类的一个新实例,并使用ArcGIS平台中产品生成的JSON对象的值对其进行初始化。
isFulfilled():可能用于验证类的实例创建是否完成(解析或拒绝)。
isRejected():可能用于验证创建类的实例是否被拒绝。
isResolved():可用于验证创建类的实例是否已解析。
load():加载该类引用的资源。
loadAll():加载与地面相关的所有外部可加载资源。
toJSON():将此类的实例转换为其ArcGIS门户JSON表示。
when():一旦创建了类的实例,就可以使用。
view.when(function () {
console.log(map.ground.isFulfilled());
console.log(map.ground.isRejected());
console.log(map.ground.isResolved());
console.log(map.ground.toJSON());
});
map.ground.load().catch(function (error) {}).then(function () {
console.log("load");
});
queryElevation():查询底层服务中给定几何图形的高程值。返回的结果包含几何图形的一个副本,其z值是从具有可用数据的第一层的高程数据中取样的。
参数:
geometry:取样的几何形状。Point、Multipoint、Polyine。
const map = new Map({
basemap: "topo-vector",
ground: "world-elevation",
spatialReference:4326
});
const view = new SceneView({
container: 'mapDivRef',
map: map,
});
map.ground.surfaceColor = '#004C73';
var points = [
[ 86.9252, 27.9883 ],
[ 86.9265, 27.9894 ],
[ 86.9292, 27.9923 ],
[ 86.9324, 27.9960 ],
[ 86.9359, 27.9992 ]
];
map.ground.queryElevation(new Multipoint({
points:points,
//不设置坐标系统会出错
spatialReference: 4326
}), {returnSampleInfo: true})
.then(function(result) {
result.geometry.points.forEach(function (point,index) {
var elevation=Math.round(point[2]);
var resolution=result.sampleInfo[index].demResolution;
var coordinateText="("+point[0]+","+point[1]+")";
var resolutionText=Math.round(resolution)+"meter resolution";
console.log("Sampled " + coordinateText + ": " + elevation + " at " + resolutionText);
});
}).catch(function (error) {
console.error("Failed to query elevation:", error);
});
版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/ground/559/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论