new SceneView(options)
支持如下方法:
[1、视点跳转][2、导出场景视图的配置文件]
[3、通过一个配置生成一个场景视图对象]
[4、屏幕像素坐标点转地理坐标点]
[5、地理坐标点转屏幕像素坐标点]
[6、获取当前视图容器的宽高]
[7、获取当前视图中心点]
[8、获取当前视图的地理范围]
[9、获取当前层级]
[10、获取当前比例尺]
11、注册事件12、移除事件[15、获取实际的M3DSet对象]
[16、设置缩视野中心]
[17、设置视图的地理范围]
[18、屏幕快照]
[19、图元检测]
[20、销毁视图对象]
场景视图类
继承自zondy.SceneView
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
构造参数
|
Fires
- BaseView#event:鼠标点击事件
- BaseView#event:鼠标双击事件
- BaseView#event:鼠标按下事件
- BaseView#event:鼠标抬起事件
- BaseView#event:鼠标右键点击事件
- BaseView#event:鼠标移动事件
- BaseView#event:地图视图改变事件
Examples
// ES5引入方式
const { Map } = zondy
const { SceneView } = zondy.cesium
// ES6引入方式
import { Map } from "@mapgis/webclient-common"
import { SceneView } from "@mapgis/webclient-cesium-plugin"
// 初始化图层管理容器
const map = new Map();
// 初始化地图视图对象
const sceneView = new SceneView({
// 视图id
viewId: "mapgis-3d-viewer",
// 图层管理容器
map: map
});
// ES5引入方式
const { Map } = zondy
const { SceneView } = zondy.cesium
// ES6引入方式
import { Map } from "@mapgis/webclient-common"
import { SceneView } from "@mapgis/webclient-cesium-plugin"
// 初始化图层管理容器
const map = new Map();
let innerView = new Cesium.Viewer(viewId);
// 初始化地图视图对象
const sceneView = new SceneView({
// 视图id
viewId: "mapgis-3d-viewer",
// 图层管理容器
map: map,
// 外部创建的三方cesium对象
innerView: innerView
});
Extends
- zondy.SceneView
Members
-
centerPoint
-
地图视图中心点
-
engineTypeEngineType
-
引擎类型,为'cesium'
-
extensionOptionsObject
-
初始化视图的额外参数,可以通过该参数传入引擎原生的构造参数
-
extentExtent
-
地图视图范围
-
heightNumber
-
地图视图高度
-
logoScaleNumber
-
商标缩放系数
-
maxZoomNumber
-
地图视图最大层级
-
minZoomNumber
-
地图视图最小层级
-
popupPopup
-
地图弹框popup
-
scaleNumber
-
地图视图比例尺
-
spatialReferenceSpatialReference
-
视图空间参考系
-
stationaryBoolean
-
地图视图是否静止
-
widthNumber
-
地图视图宽度
-
zoomNumber
-
地图视图层级
Methods
-
SceneView.fromJSON(json){SceneView}
view/SceneView.js, line 2315 -
Name Type Description jsonObject 场景视图配置
Returns:
Type Description SceneView -
destroy()
view/SceneView.js, line 2017 -
-
flyTo(options)
view/SceneView.js, line 718 -
视点跳转
Name Type Description options跳转参数
Name Type Default Description centerArray 可选 相机要跳转的中心点,单位度,[精度,纬度,高程]
durationNumber 2 可选 相机飞行到终点时的持续时间,单位秒
extentExtent 可选 相机要飞行的某个范围
orientationObject 可选 相机飞行到终点时的视角朝向,包含偏航角、俯仰角和翻滚角
completefunction 可选 相机飞行到终点时触发的函数
cancelfunction 可选 相机取消飞行时触发的函数
endTransformObject 可选 相机飞行到终点时的矩阵
maximumHeightNumber 可选 相机飞行的最大高度
pitchAdjustHeightNumber 可选 如果相机的飞行高度高于该值,则调整飞行过程中的俯仰角使相机视角向下看,并将地球保持在相机视窗中
flyOverLongitudeNumber 可选 强制让相机绕着地球飞行指定经度,直到到达终点位置
flyOverLongitudeWeightNumber 可选 Examples
按范围跳转 // ES5引入方式 const { Map } = zondy const { IGSMapImageLayer } = zondy.layer const { LayerEventType } = zondy.Enum const { Extent } = zondy.geometry const { SceneView } = zondy.cesium // ES6引入方式 import { Map, SceneView, IGSMapImageLayer, LayerEventType, Extent } from "@mapgis/webclient-common" import { SceneView} from "@mapgis/webclient-cesium-plugin" // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 const sceneView = new SceneView({ // 视图id viewId: "mapgis-3d-viewer", // 图层管理容器 map: map }); // 添加一个地图图层 const igsMapImageLayer = new IGSMapImageLayer({ url: 'http://192.168.82.89:8089/igs/rest/services/Map/Hubei4326/MapServer' }); map.add(igsMapImageLayer); // 图层加载完毕 igsMapImageLayer.on(LayerEventType.layerViewCreated, function (result) { console.log("加载完毕:", result.layer) // 视点跳转 sceneView.flyTo({ extent: new Extent({ xmin: 108.34341, ymin: 29.01258222765238, xmax: 116.15093956121316, ymax: 33.29320177370206 }) }) })跳转中心点 // ES5引入方式 const { Map } = zondy const { IGSMapImageLayer } = zondy.layer const { LayerEventType } = zondy.Enum const { SceneView } = zondy.cesium // ES6引入方式 import { Map, IGSMapImageLayer, LayerEventType } from "@mapgis/webclient-common" import { SceneView } from "@mapgis/webclient-cesium-plugin" // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 const sceneView = new SceneView({ // 视图id viewId: "mapgis-3d-viewer", // 图层管理容器 map: map }); // 添加一个地图图层 const igsMapImageLayer = new IGSMapImageLayer({ url: 'http://192.168.82.89:8089/igs/rest/services/Map/Hubei4326/MapServer' }); map.add(igsMapImageLayer); // 图层加载完毕 igsMapImageLayer.on(LayerEventType.layerViewCreated, function (result) { console.log("加载完毕:", result.layer) // 视点跳转 sceneView.flyTo({ center: [113, 30, 1000000] }) }) -
getCenter(){Object}
view/SceneView.js, line 1273 -
Returns:
Type Description Object 当前视图容器的宽高对象 -
getExtent(){Extent}
view/SceneView.js, line 1321 -
Returns:
Type Description Extent 获取当前视图的地理范围 -
getScale(){Number}
view/SceneView.js, line 1909 -
获取当前比例尺
Returns:
Type Description Number 比例尺 实际10000米:地图1米 -
getSize(){Object}
view/SceneView.js, line 1261 -
Returns:
Type Description Object 当前视图容器的宽高对象 -
getZoom(){Number}
view/SceneView.js, line 1851 -
获取当前层级
Returns:
Type Description Number 层级 -
goTo(goToTarget, options){Promise.<Boolean>}
view/SceneView.js, line 862 -
Name Type Description goToTarget跳转参数
Name Type Default Description centerPoint | Array 可选 视图跳转中心点
zoomNumber 可选 视图跳转层级
scaleNumber 可选 视图跳转比例尺
layerLayer | SubLayer | undefined 可选 跳转的图层。如果是模型缓存图层,或者是场景子图层(模型缓存),则优先会使用模型缓存的外包盒跳转。如果传入IGS场景图层,默认会跳转到场景图层的第一个非组类型子图层范围
targetGeometry | Array.<Geometry> | Collection.<Geometry> 可选 按范围跳转
goToLayerModeString 'extent' 可选 跳转图层的模式,仅在传入layer参数且layer为瓦片类图层时生效。支持两种模式,'extent' 表示根据图层范围进行跳转, 'fix-level'按范围并调整到到整数级
options动画参数
Name Type Default Description animateBoolean true 可选 新视图的过渡是否开启动画,默认开启动画
durationNumber 可选 动画的持续时间,以毫秒为单位,默认不设置引擎跳转接口参数duration,此时会根据飞行需要移动的距离来计算一个理想的持续时间
Returns:
Type Description Promise.<Boolean> 视图跳转是否成功 Examples
中心点跳转示例 // ES5引入方式 const { Map } = zondy const { SceneView } = zondy.cesium // ES6引入方式 import { Map } from "@mapgis/webclient-common" import { SceneView } from "@mapgis/webclient-cesium-plugin" // 初始化图层管理容器 map = new .Map(); // 初始化地图视图对象 sceneView = new SceneView({ // 视图id viewId: "view-id", // 图层管理容器 map: map }); // 视点跳转 sceneView.goTo({ // 跳转中心点 center: [115.47643872463577, 30.980700423496124], // 地图层级 zoom: 8 });按范围跳转示例 // ES5引入方式 const { Map } = zondy const { Extent, Circle } = zondy.geometry const { SceneView } = zondy.cesium // ES6引入方式 import { Map, Extent, Circle } from "@mapgis/webclient-common" import { SceneView } from "@mapgis/webclient-cesium-plugin" // 初始化图层管理容器 map = new Map(); // 初始化地图视图对象 sceneView = new SceneView({ // 视图id viewId: "view-id", // 图层管理容器 map: map }); const extent1 = new Extent({ xmin: 111.88463529230717, ymin: 28.646934514163803, xmax: 116.89989408129225, ymax: 33.07991791253288, }) const geometry2 = new Circle({ center: [111, 29], radius: 100, radiusUnit: "kilometers", }) sceneView .goTo({ target: [extent1, geometry2], }) .then(() => { console.log("gotoExtent callback") }) -
hitTest(screenPoint){Array}
view/SceneView.js, line 1432 -
穿透检测,图元拾取。目前支持graphic类型拾取结果,支持图层类型GraphicLayer,FeatureLayer。
Name Type Description screenPointObject 屏幕像素坐标点,例如{ x: 900, y: 500 }
Returns:
Type Description Array 图元检测结果。备注:10.7.4.10及以后中,对于外置属性的模型缓存数据,拾取结果中的graphic为Promise对象,其他均为Feature对象。 Example
根据基础图层对象或者图层id查询并返回实际图层 // ES5引入方式 const { Map, Feature } = zondy const { Point, Polygon, MultiPolygon ,Extent } = zondy.geometry const { GraphicsLayer, IGSFeatureLayer, IGSTileLayer } = zondy.layer const { SceneView } = zondy.cesium // ES6引入方式 import { SceneView } from "@mapgis/webclient-leaflet-plugin"; import { Map, Point, Polygon, MultiPolygon ,Extent, GraphicsLayer, Feature, Circle, IGSFeatureLayer, IGSTileLayer } from "@mapgis/webclient-common"; // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 this.sceneView = new SceneView({ // 视图id viewId: "mapgis-3d-viewer", // 图层管理容器 map: map, }) // 创建一个要素 const feature = [ new Feature({ id: '11111', geometry: new Point({ coordinates: [113, 30] }), }), new Feature({ id: '11112', geometry: new Point({ coordinates: [113, 30.15] }), }), new Feature({ id: '11112', geometry: new Point({ coordinates: [113, 35] }), }), ] // 初始化几何图层 const graphicsLayer = new GraphicsLayer({ graphics:feature }) map.add(this.graphicsLayer) const result = this.sceneView.hitTest({x:1000,y:600}) -
setCenter(value)
view/SceneView.js, line 1293 -
Name Type Description valuePoint 视图中心
-
setExtent(value)
view/SceneView.js, line 1350 -
Name Type Description valueExtent 视图的地理范围
-
takeScreenshot(options){Promise}
view/SceneView.js, line 2002 -
屏幕快照
Name Type Default Description optionsObject {} 可选 屏幕快照配置配置
Name Type Default Description formatPictureFormat PictureFormat.PNG 可选 图片格式,支持png,jpeg格式
filenameString 'screenshotFile' 可选 下载文件名
widthNumber 可选 图片宽度
heightNumber 可选 图片高度
xNumber 可选 图片原点x
yNumber 可选 图片原点y
isDownloadBoolean true 可选 是否下载图片
Returns:
Type Description Promise 屏幕快照 {dataUrl String },且浏览器会下载图片 Example
屏幕快照 // ES5引入方式 var { Map, SceneView } = zondy var { PictureFormat } = zondy.Enum // ES6引入方式 import { Map, SceneView } from "@mapgis/webclient-cesium-plugin" import { PictureFormat } from "@mapgis/webclient-common" // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 const sceneView = new SceneView({ // 二维场景视图的容器(html的div标签)ID viewId: "二维场景视图的容器的id", // 图层管理容器 map: map }) // 设置屏幕快照参数 const screenshotOptions: { format: PictureFormat.PNG } // 开始屏幕快照 sceneView.takeScreenshot(screenshotOptions).then((result) => { // 获取base64格式的url字符串 console.log("dataUrl:", result.dataUrl) }) -
toJSON(){Object}
view/SceneView.js, line 1162 -
Returns:
Type Description Object 导出的配置文件 -
toMap(screenPoint){Point}
view/SceneView.js, line 1191 -
Name Type Description screenPointObject 屏幕像素坐标点,传入的 x范围为[0,canvas.width - 1],传入的 x范围为[0,canvas.height - 1],例如{ x: 900, y: 500 }
Returns:
Type Description Point 地理坐标点 Example
屏幕像素坐标点转地理坐标示例
// ES5引入方式 const { Map } = zondy const { Point } = zondy.geometry const { SceneView } = zondy.cesium // ES6引入方式 import { SceneView } from "@mapgis/webclient-cesium-plugin" import { Map, Point } from "@mapgis/webclient-common" // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 const sceneView = new SceneView({ // 视图id viewId: "mapgis-3d-viewer", // 图层管理容器 map: map, }) const screenPoint = { x: 900, y: 500 } sceneView.toMap(screenPoint) -
toScreen(point){Object}
view/SceneView.js, line 1241 -
Name Type Description pointPoint 地理坐标点
Returns:
Type Description Object 屏幕像素坐标点 Example
地理坐标点转屏幕像素坐标示例
// ES5引入方式 const { Map } = zondy const { Point, Extent } = zondy.geometry const { SceneView } = zondy.cesium // ES6引入方式 import { SceneView } from "@mapgis/webclient-cesium-plugin" import { Map, Point, Extent } from "@mapgis/webclient-common" // 初始化图层管理容器 const map = new Map(); // 初始化地图视图对象 const sceneView = new SceneView({ // 视图id viewId: "mapgis-2d-viewer", // 图层管理容器 map: map }); const geoPoint = new Point({ coordinates: [123, 23, 0] }) sceneView.toScreen(geoPoint)