- mars3D使用需要 import以下文件
mars3D获取可视化范围API getExtent()
import * as mars3d from 'mars3d'import * as Cesium from 'mars3d-cesium'
查看graphic是否在可视范围内
/* 相机移动结束事件 */this.map.on(mars3d.EventType.cameraMoveEnd, (event) => {// 相机移动,获取屏幕范围this.cameraScreen = this.getViewExtend();});// 滚轮变化时, 获取屏幕范围this.map.on(mars3d.EventType.wheel, (event) => {this.cameraScreen = this.getViewExtend();});
// 获取当前车辆的经度和维度,用于判断是否再当前屏幕范围内let lon = data.lon;let lat = data.lat;// 找到了车辆,但没在屏幕范围,就移除车辆if(lon > this.cameraScreen.maxx || lon < this.cameraScreen.minx || lat > this.cameraScreen.maxy || lat < this.cameraScreen.miny) {carGraphic.remove();return;}
获取可视化范围

getViewExtend() {let params = {};let extend = viewer.camera.computeViewRectangle();if (typeof extend === "undefined") {//2D下会可能拾取不到坐标,extend返回undefined,因此作如下转换let canvas = viewer.scene.canvas;let upperLeft = new Cesium.Cartesian2(0, 0);//canvas左上角坐标转2d坐标let lowerRight = new Cesium.Cartesian2(canvas.clientWidth,canvas.clientHeight);//canvas右下角坐标转2d坐标let ellipsoid = viewer.scene.globe.ellipsoid;let upperLeft3 = viewer.camera.pickEllipsoid(upperLeft,ellipsoid);//2D转3D世界坐标let lowerRight3 = viewer.camera.pickEllipsoid(lowerRight,ellipsoid);//2D转3D世界坐标let upperLeftCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(upperLeft3);//3D世界坐标转弧度let lowerRightCartographic= viewer.scene.globe.ellipsoid.cartesianToCartographic(lowerRight3);//3D世界坐标转弧度let minx = Cesium.Math.toDegrees(upperLeftCartographic.longitude);//弧度转经纬度let maxx = Cesium.Math.toDegrees(lowerRightCartographic.longitude);//弧度转经纬度let miny = Cesium.Math.toDegrees(lowerRightCartographic.latitude);//弧度转经纬度let maxy = Cesium.Math.toDegrees(upperLeftCartographic.latitude);//弧度转经纬度console.log("经度:" + minx + "----" + maxx);console.log("纬度:" + miny + "----" + maxy);params.minx = minx;params.maxx = maxx;params.miny = miny;params.maxy = maxy;} else {//3D获取方式params.maxx = Cesium.Math.toDegrees(extend.east);params.maxy = Cesium.Math.toDegrees(extend.north);params.minx = Cesium.Math.toDegrees(extend.west);params.miny = Cesium.Math.toDegrees(extend.south);}return params;//返回屏幕所在经纬度范围}
