通过经纬度范围和规定高度在球上画一片立方体:
DrawRangeGrid(4, [20, 30], [100, 107], [0, 4000])
const LON_LAT_TABLE = [0.10, 0.10, 0.10, 0.10, 0.10]
const HEIGHT_TABLE = [100, 200, 400, 800, 1000]
const DrawRangeGrid = (level, lon_range, lat_range, height_range) => {
const lonlatResolution = LON_LAT_TABLE[level]
const heightResolution = HEIGHT_TABLE[level]
const lon_min = lon_range ? lon_range[0] : -180
const lon_max = lon_range ? lon_range[1] : 180
const lat_min = lat_range ? lat_range[0] : -90
const lat_max = lat_range ? lat_range[1] : 90
const height_min = height_range ? height_range[0] : 0
const height_max = height_range ? height_range[1] : Math.pow(2, 16)
console.log("long lat resolution", lonlatResolution)
console.log("height resolution", heightResolution)
const instances = []
for (let lon = lon_min; lon <= lon_max - lonlatResolution; lon += lonlatResolution) {
for (let lat = lat_min; lat <= lat_max - lonlatResolution; lat += lonlatResolution) {
for (let height = height_min; height <= height_max; height += heightResolution) {
const graphic = new mars3d.graphic.BoxPrimitive({
// position: [lat+lonlatResolution/2,lon+lonlatResolution/2,height+heightResolution/2],
position: new mars3d.LngLatPoint(lat + lonlatResolution / 2, lon + lonlatResolution / 2, height + heightResolution / 2),
style: {
dimensions: new Cesium.Cartesian3(1000.0, 1000.0, 1000.0),
// fill: true,
// material: Cesium.Color.WHITE.withAlpha(0.01),
color: Cesium.Color.YELLOW.withAlpha(0.3)
// opacity: 0.01,
// outline: true,
// outlineColor: Cesium.Color.YELLOW
// clampToGround: true
},
id: lat + " " + lon + " " + height,
attr: { remark: "示例1" }
})
instances.push(graphic)
}
}
}
const combine = new mars3d.graphic.BoxCombine({
instances
})
flyLineGraphicLayer.addGraphic(combine)
}