|
@@ -0,0 +1,1136 @@
|
|
|
|
+import {
|
|
|
|
+ Store
|
|
|
|
+} from '@/store/index'
|
|
|
|
+let store = Store();
|
|
|
|
+
|
|
|
|
+import http from '@/utils/http.js'
|
|
|
|
+
|
|
|
|
+// import * as jt3dSDK from '/public/jt3dSDK/jt3d.es.js';
|
|
|
|
+
|
|
|
|
+import map_xzqh_zj from '@/assets/dataFile/xz.json';
|
|
|
|
+
|
|
|
|
+let jtMap3d = undefined; // 地图对象
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 初始化地图业务,生命周期钩子函数(必须)
|
|
|
|
+ * 框架在地图初始化完成后自动调用该函数
|
|
|
|
+ * @param mapInstance 地图对象
|
|
|
|
+ */
|
|
|
|
+export function onMounted(mapInstance) {
|
|
|
|
+ jtMap3d = mapInstance // 记录首次创建的map
|
|
|
|
+
|
|
|
|
+ debugger
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//所有图层
|
|
|
|
+export function getAllLayers() {
|
|
|
|
+
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+
|
|
|
|
+ //获取地图图集id
|
|
|
|
+ let roleId = store.roleId
|
|
|
|
+ let atlasLayersSqlWhere = '"roleId"' + " = " + roleId + " "
|
|
|
|
+
|
|
|
|
+ //获取图集
|
|
|
|
+ http.get('/getTableList', {
|
|
|
|
+ tableName: 'sys_map_atlas_layers', //表名
|
|
|
|
+ sqlWhere: atlasLayersSqlWhere, //查询条件
|
|
|
|
+ orderByField: '' //排序字段
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(res.data)
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+export function getLayers() {
|
|
|
|
+
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+
|
|
|
|
+ //获取地图图集id
|
|
|
|
+ let roleId = store.roleId
|
|
|
|
+ let atlasLayersSqlWhere = '"roleId"' + " = " + roleId + " and " + '"atlasType"' + "='图层'"
|
|
|
|
+
|
|
|
|
+ //获取图集
|
|
|
|
+ http.get('/getTableList', {
|
|
|
|
+ tableName: 'sys_map_atlas_layers', //表名
|
|
|
|
+ sqlWhere: atlasLayersSqlWhere, //查询条件
|
|
|
|
+ orderByField: '' //排序字段
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(res.data)
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export function getBaseMaps() {
|
|
|
|
+
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+
|
|
|
|
+ //获取地图图集id
|
|
|
|
+ let roleId = store.roleId
|
|
|
|
+ let atlasLayersSqlWhere = '"roleId"' + " = " + roleId + " and " + '"atlasType"' + "='底图'"
|
|
|
|
+
|
|
|
|
+ //获取图集
|
|
|
|
+ http.get('/getTableList', {
|
|
|
|
+ tableName: 'sys_map_atlas_layers', //表名
|
|
|
|
+ sqlWhere: atlasLayersSqlWhere, //查询条件
|
|
|
|
+ orderByField: '' //排序字段
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(res.data)
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 单击事件
|
|
|
|
+ */
|
|
|
|
+export function clickEntity(jt3d) {
|
|
|
|
+
|
|
|
|
+ if (jt3d.handlerLeftClick) {
|
|
|
|
+ jt3d.handlerLeftClick.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除事件
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ jt3d.handlerLeftClick = new Cesium.ScreenSpaceEventHandler(
|
|
|
|
+ jt3d._viewer.scene.canvas
|
|
|
|
+ );
|
|
|
|
+ //注册大球单机事件
|
|
|
|
+ jt3d.handlerLeftClick.setInputAction(function(e) {
|
|
|
|
+ var pick = jt3d._viewer.scene.pick(e.position); //拾取当前的entity对象
|
|
|
|
+ var cartesian = jt3d._viewer.scene.pickPosition(e.position); //获取当前点坐标
|
|
|
|
+ if (Cesium.defined(cartesian)) {
|
|
|
|
+ //将笛卡尔坐标转换为地理坐标
|
|
|
|
+ let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
|
|
|
|
+ //将弧度转为度的十进制度表示
|
|
|
|
+ let lng = Cesium.Math.toDegrees(cartographic.longitude);
|
|
|
|
+ let lat = Cesium.Math.toDegrees(cartographic.latitude);
|
|
|
|
+ let alt = cartographic.height; //高度
|
|
|
|
+
|
|
|
|
+ initQuery({
|
|
|
|
+ spatialType: '点',
|
|
|
|
+ coordinate: lng + " " + lat,
|
|
|
|
+ buffer: ''
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 设置默认视图-初始化中国区域范围视角
|
|
|
|
+ */
|
|
|
|
+export function setView(jt3d) {
|
|
|
|
+ // jt3d.flytoChina();
|
|
|
|
+
|
|
|
|
+ //初始化中国区域范围视角
|
|
|
|
+ jt3d.setViewChina();
|
|
|
|
+
|
|
|
|
+ // jt3d.setView({
|
|
|
|
+ // longitude: 103.84, //经度
|
|
|
|
+ // latitude: 31.15, // 维度
|
|
|
|
+ // height: 24000000, // 高度
|
|
|
|
+ // heading: 0, // 偏航
|
|
|
|
+ // pitch: -90, // 俯仰,人如果在赤道上空,俯仰角为0可见地球。如果在北纬,俯仰角为负才能见地球
|
|
|
|
+ // roll: 0.0 // 翻滚
|
|
|
|
+ // });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 全图-飞行到项目区域范围视角
|
|
|
|
+ */
|
|
|
|
+export function fullMap(jt3d) {
|
|
|
|
+ // 初始化项目区域范围视角
|
|
|
|
+ let optionsS = {
|
|
|
|
+ west: 116.883783, //西
|
|
|
|
+ south: 36.573500, //南
|
|
|
|
+ east: 117.326923, //东
|
|
|
|
+ north: 36.329733, //北
|
|
|
|
+ isRemove: false, //定位完成后是否删除
|
|
|
|
+ duration: 3, //飞行时间
|
|
|
|
+ heading: 0,
|
|
|
|
+ pitch: -90,
|
|
|
|
+ range: 60000
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ let optionsE = {
|
|
|
|
+ west: 116.883783, //西
|
|
|
|
+ south: 36.573500, //南
|
|
|
|
+ east: 117.326923, //东
|
|
|
|
+ north: 36.329733, //北
|
|
|
|
+ isRemove: true, //定位完成后是否删除
|
|
|
|
+ duration: 3, //飞行时间
|
|
|
|
+ heading: 0,
|
|
|
|
+ pitch: -60,
|
|
|
|
+ range: 60000
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ var fullMapPromise = jt3d.fullMap(optionsS);
|
|
|
|
+ fullMapPromise.then(function(flyPromise) {
|
|
|
|
+ jt3d.fullMap(optionsE);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 设置天空盒子
|
|
|
|
+ */
|
|
|
|
+export function addSkybox(jt3d) {
|
|
|
|
+ //设置天空盒子,默认蓝天
|
|
|
|
+ let SceneEffects = new jt3dSDK.SceneEffects.SkyBox(window.viewer);
|
|
|
|
+ SceneEffects.setGroundSkyBox();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 添加镇街边界线——精灵线
|
|
|
|
+ */
|
|
|
|
+export function addBoundaryLine(jt3d) {
|
|
|
|
+ let PolylineObject = new jt3dSDK.PolylineObject(jt3d._viewer);
|
|
|
|
+ PolylineObject.drawPolylineByGeoJson(map_xzqh_zj, {
|
|
|
|
+ width: 5,
|
|
|
|
+ color: '#04FFFF',
|
|
|
|
+ isImageAlpha: true, //用图片自带颜色
|
|
|
|
+ duration: 3000,
|
|
|
|
+ imgUrl: "jt3dSDK/imgs/polylinematerial/spriteline1.png"
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 控制地图服务的显示及隐藏
|
|
|
|
+ * @param {Object} viewer
|
|
|
|
+ * @param {Object} options
|
|
|
|
+ */
|
|
|
|
+export function setLayersControl(viewer, options, checked) {
|
|
|
|
+
|
|
|
|
+ let layer = new jt3dSDK.layer(viewer);
|
|
|
|
+ var imageryLayers = viewer.imageryLayers;
|
|
|
|
+
|
|
|
|
+ //参数集
|
|
|
|
+ let parameterset = options.parameterset;
|
|
|
|
+ if (options.parameterset instanceof Object) {
|
|
|
|
+ parameterset = options.parameterset;
|
|
|
|
+ } else if (options.parameterset != "" && options.parameterset != null && options.parameterset != undefined) {
|
|
|
|
+ parameterset = JSON.parse(options.parameterset);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ switch (options.loadtype) {
|
|
|
|
+ case "DEM": //地形服务(DEM)
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.terrainExaggeration) { //地形夸张系数
|
|
|
|
+ _options.terrainExaggeration = parameterset.terrainExaggeration;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ layer.addTerrain(_options);
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeTerrain().then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
|
|
+
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ if (window[options.serviceId]) {
|
|
|
|
+ window[options.serviceId].show = true;
|
|
|
|
+ } else {
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.height) {
|
|
|
|
+ _options.height = parameterset.height;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.alpha) {
|
|
|
|
+ _options.alpha = parameterset.alpha;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //加载实景
|
|
|
|
+ layer.addCesium3DTileset(_options, function(serviceId) {
|
|
|
|
+ window[serviceId].show = true;
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (window[options.serviceId]) {
|
|
|
|
+ //3DTileset数据量比较大,会报很多cesium错误
|
|
|
|
+ // layer.removeScenePrimitives({
|
|
|
|
+ // serviceId: options.serviceId
|
|
|
|
+ // }).then(res => {
|
|
|
|
+ // resolve(true);
|
|
|
|
+ // });
|
|
|
|
+
|
|
|
|
+ window[options.serviceId].show = false;
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ if (window[options.serviceId]) {
|
|
|
|
+ window[options.serviceId].show = true;
|
|
|
|
+ } else {
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.color) {
|
|
|
|
+ _options.color = parameterset.color;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //加载白膜
|
|
|
|
+ layer.addCesium3DTilesetBm(_options, function(serviceId) {
|
|
|
|
+ window[serviceId].show = true;
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (window[options.serviceId]) {
|
|
|
|
+ // layer.removeScenePrimitives({
|
|
|
|
+ // serviceId: options.serviceId
|
|
|
|
+ // }).then(res => {
|
|
|
|
+ // resolve(true);
|
|
|
|
+ // });
|
|
|
|
+
|
|
|
|
+ window[options.serviceId].show = false;
|
|
|
|
+ resolve(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ case "GeoJsonPoint": //GeoJsonPoint
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.billboard instanceof Object) {
|
|
|
|
+ let billboard = parameterset.billboard;
|
|
|
|
+ _options.billboard = billboard;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset.label instanceof Object) {
|
|
|
|
+ let label = parameterset.label;
|
|
|
|
+ _options.label = label;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addBillboardByJson(_options, function(serviceId) {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeDataSources({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "GeoJsonPolyline": //GeoJsonPolyline
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+
|
|
|
|
+ if (parameterset.clampToGround) { //是否贴地
|
|
|
|
+ _options.clampToGround = parameterset.clampToGround;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.isImageAlpha) { //是否采用图片颜色
|
|
|
|
+ _options.isImageAlpha = parameterset.isImageAlpha;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.imgUrl) { //精灵线图片
|
|
|
|
+ _options.imgUrl = parameterset.imgUrl;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.color) { //指定线的颜色
|
|
|
|
+ _options.color = parameterset.color;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.width) { //线宽
|
|
|
|
+ _options.width = parameterset.width;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.duration) { //持续时间 毫秒,越小越快
|
|
|
|
+ _options.duration = parameterset.duration;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.count) { //重复次数
|
|
|
|
+ _options.count = parameterset.count;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset
|
|
|
|
+ .direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
|
|
|
|
+ _options.direction = parameterset.direction;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset
|
|
|
|
+ .order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
|
|
|
|
+ _options.order = parameterset.order;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addPolylineByGeoJson(_options, function(serviceId) {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeDataSources({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "GeoJsonWall": //GeoJson Wall
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+
|
|
|
|
+ if (parameterset.clampToGround) { //是否贴地
|
|
|
|
+ _options.clampToGround = parameterset.clampToGround;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.minimunHeights) { //最低高度
|
|
|
|
+ _options.minimunHeights = parameterset.minimunHeights;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumHeights) { //最高高度
|
|
|
|
+ _options.maximumHeights = parameterset.maximumHeights;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.color) { //指定墙体的颜色
|
|
|
|
+ _options.color = parameterset.color;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.trailImage) { //墙体图片
|
|
|
|
+ _options.trailImage = parameterset.trailImage;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.duration) { //持续时间 毫秒,越小越快
|
|
|
|
+ _options.duration = parameterset.duration;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.count) { //重复次数
|
|
|
|
+ _options.count = parameterset.count;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
|
|
|
|
+ _options.direction = parameterset.direction;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
|
|
|
|
+ _options.order = parameterset.order;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // .json文件需要放到public文件夹下,直接调用,
|
|
|
|
+ layer.addWallByJson(_options, function(serviceId) {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeDataSources({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "entitiesGltf": //gltf/glb
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ points: [],
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.points) { //模型位置
|
|
|
|
+ _options.points = parameterset.points;
|
|
|
|
+
|
|
|
|
+ if (parameterset.minimumPixelSize) { //模型最小刻度
|
|
|
|
+ _options.minimumPixelSize = parameterset.minimumPixelSize;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumScale) { //模型的最大比例尺大小,设置模型最大放大大小
|
|
|
|
+ _options.maximumScale = parameterset.maximumScale;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.silhouetteColor) { //模型轮廓颜色
|
|
|
|
+ _options.silhouetteColor = parameterset.silhouetteColor;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.alpha) { //模型透明度
|
|
|
|
+ _options.alpha = parameterset.alpha;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.heading) { //以弧度为单位的航向分量
|
|
|
|
+ _options.heading = parameterset.heading;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.pitch) { //以弧度为单位的航向分量
|
|
|
|
+ _options.pitch = parameterset.pitch;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.roll) { //以弧度为单位的滚动分量
|
|
|
|
+ _options.roll = parameterset.roll;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addEntitiesGltf(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeEntity({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "scenePrimitivesGltf": //加载gltf/glb
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ points: [],
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.points) { //模型位置
|
|
|
|
+ _options.points = parameterset.points;
|
|
|
|
+
|
|
|
|
+ if (parameterset.scale) { //放大倍数
|
|
|
|
+ _options.scale = parameterset.scale;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addScenePrimitivesGltf(_options, function(serviceId) {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeScenePrimitives({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "PolygonImageMaterial": //图片材质
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.points) {
|
|
|
|
+ layer.addPolygonImageMaterial({
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ points: parameterset.points,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }, function(serviceId) {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeEntity({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "CrImageServerLayer": //贴地所有地形、模型的规划图、网格地图
|
|
|
|
+
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ let floatLayer = new jt3dSDK.CrImageServerLayer({
|
|
|
|
+ viewer: viewer,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ opacity: options.opacity,
|
|
|
|
+ show: true
|
|
|
|
+ });
|
|
|
|
+ window[options.serviceId] = floatLayer;
|
|
|
|
+ //添加网格地图
|
|
|
|
+ // window[options.serviceId].show();
|
|
|
|
+ resolve(true);
|
|
|
|
+ } else {
|
|
|
|
+ window[options.serviceId].hide();
|
|
|
|
+ resolve(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ case "UrlTemplateImageryProvider": //加载URL模板服务
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.CRS) { //坐标系
|
|
|
|
+ _options.CRS = parameterset.CRS;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.minimumLevel) { //最小层级
|
|
|
|
+ _options.minimumLevel = parameterset.minimumLevel;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumLevel) { //最大层级
|
|
|
|
+ _options.maximumLevel = parameterset.maximumLevel;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //加载服务
|
|
|
|
+ layer.addUrlTemplateImagery(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ //重置图层顺序
|
|
|
|
+ setLayerNumber(imageryLayers, {
|
|
|
|
+ serviceId: serviceId,
|
|
|
|
+ layertype: options.layertype
|
|
|
|
+ })
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeImageryProvider({
|
|
|
|
+ serviceId: options.serviceId
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case "WebMapTileServiceImageryProvider": // WMTS地图服务
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ layers: 'cia',
|
|
|
|
+ style: 'default',
|
|
|
|
+ tileMatrixSetID: 'w',
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.layers) { //WMTS请求的层名
|
|
|
|
+ _options.layers = parameterset.layers;
|
|
|
|
+
|
|
|
|
+ if (parameterset.style) { //WMTS请求的样式名
|
|
|
|
+ _options.style = parameterset.style;
|
|
|
|
+
|
|
|
|
+ if (parameterset.tileMatrixSetID) { //用于WMTS请求的TileMatrixSet的标识符
|
|
|
|
+ _options.tileMatrixSetID = parameterset.tileMatrixSetID;
|
|
|
|
+
|
|
|
|
+ if (parameterset.minimumLevel) { //最小层级
|
|
|
|
+ _options.minimumLevel = parameterset.minimumLevel;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumLevel) { //最大层级
|
|
|
|
+ _options.maximumLevel = parameterset.maximumLevel;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addWebMapTileService(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ //重置图层顺序
|
|
|
|
+ setLayerNumber(imageryLayers, {
|
|
|
|
+ serviceId: serviceId,
|
|
|
|
+ layertype: options.layertype
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置tileMatrixSetID");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置style");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置layers");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置layers,style,tileMatrixSetID");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeImageryProvider({
|
|
|
|
+ serviceId: options.serviceId
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "WebMapServiceImageryProvider": //WMS地图服务
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.layers) { //WMTS请求的层名
|
|
|
|
+ _options.layers = parameterset.layers;
|
|
|
|
+
|
|
|
|
+ if (parameterset.minimumLevel) { //最小层级
|
|
|
|
+ _options.minimumLevel = parameterset.minimumLevel;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumLevel) { //最大层级
|
|
|
|
+ _options.maximumLevel = parameterset.maximumLevel;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addWebMapService(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ //重置图层顺序
|
|
|
|
+ setLayerNumber(imageryLayers, {
|
|
|
|
+ serviceId: serviceId,
|
|
|
|
+ layertype: options.layertype
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置layers");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置layers");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeImageryProvider({
|
|
|
|
+ serviceId: options.serviceId
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "ArcGisMapServerImageryProvider": // ArcGIS Online和Server的相关服务
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.layers) {
|
|
|
|
+ _options.layers = parameterset.layers;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //加载服务
|
|
|
|
+ layer.addArcGisMapServer(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ //重置图层顺序
|
|
|
|
+ setLayerNumber(imageryLayers, {
|
|
|
|
+ serviceId: serviceId,
|
|
|
|
+ layertype: options.layertype
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ })
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeImageryProvider({
|
|
|
|
+ serviceId: options.serviceId
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "TileMapServiceImageryProvider": // 2.5维度地图
|
|
|
|
+ if (checked) {
|
|
|
|
+
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: options.serviceId,
|
|
|
|
+ url: options.datasource,
|
|
|
|
+ alpha: options.opacity
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.minimumLevel) { //最小层级
|
|
|
|
+ _options.minimumLevel = parameterset.minimumLevel;
|
|
|
|
+ }
|
|
|
|
+ if (parameterset.maximumLevel) { //最大层级
|
|
|
|
+ _options.maximumLevel = parameterset.maximumLevel;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ layer.addTileMapServiceImagery(_options, function(serviceId) {
|
|
|
|
+
|
|
|
|
+ //重置图层顺序
|
|
|
|
+ setLayerNumber(imageryLayers, {
|
|
|
|
+ serviceId: serviceId,
|
|
|
|
+ layertype: options.layertype
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ layer.removeImageryProvider({
|
|
|
|
+ serviceId: options.serviceId
|
|
|
|
+ }).then(res => {
|
|
|
|
+ resolve(true);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 服务定位
|
|
|
|
+ * @param {Object} viewer
|
|
|
|
+ * @param {Object} options
|
|
|
|
+ */
|
|
|
|
+export function setLayersLocation(viewer, options) {
|
|
|
|
+
|
|
|
|
+ //参数集
|
|
|
|
+ let parameterset = options.parameterset;
|
|
|
|
+ if (options.parameterset instanceof Object) {
|
|
|
|
+ parameterset = options.parameterset;
|
|
|
|
+ } else if (options.parameterset != "" && options.parameterset != null && options.parameterset != undefined) {
|
|
|
|
+ parameterset = JSON.parse(options.parameterset);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (options.isinit === '1') {
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ switch (options.loadtype) {
|
|
|
|
+ case "GeoJsonPolyline": //GeoJsonPolyline
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "GeoJsonWall": //GeoJsonWall
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "entitiesGltf": //gltf/glb
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.points) { //模型位置
|
|
|
|
+
|
|
|
|
+ // let LocateUtil = new jt3dSDK.LocateUtil(viewer);
|
|
|
|
+ // let flyToEntity = LocateUtil.flyToEntityByPoints([
|
|
|
|
+ // parameterset.points,
|
|
|
|
+ // ], 'point', {
|
|
|
|
+ // heading: '0',
|
|
|
|
+ // pitch: -90,
|
|
|
|
+ // range: 8880
|
|
|
|
+ // });
|
|
|
|
+ viewer.scene.camera.flyTo({
|
|
|
|
+ //定位坐标点
|
|
|
|
+ destination: Cesium.Cartesian3.fromDegrees(parameterset.points[0], parameterset.points[1], parameterset.points[2] || 0),
|
|
|
|
+ duration: 2, //定位的时间间隔
|
|
|
|
+ orientation: {
|
|
|
|
+ heading: Cesium.Math.toRadians(56), //方向
|
|
|
|
+ pitch: Cesium.Math.toRadians(-11), //倾斜角度
|
|
|
|
+ roll: 0
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case "scenePrimitivesGltf": //gltf/glb
|
|
|
|
+
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.points) { //模型位置
|
|
|
|
+
|
|
|
|
+ viewer.scene.camera.flyTo({
|
|
|
|
+ //定位坐标点
|
|
|
|
+ destination: Cesium.Cartesian3.fromDegrees(parameterset.points[0], parameterset.points[1], parameterset.points[2] || 0),
|
|
|
|
+ duration: 2, //定位的时间间隔
|
|
|
|
+ orientation: {
|
|
|
|
+ // heading: Cesium.Math.toRadians(56), //方向
|
|
|
|
+ // pitch: Cesium.Math.toRadians(-11), //倾斜角度
|
|
|
|
+ // roll: 0
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ resolve(true);
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ resolve("请检测图层表parameterset字段是否设置points");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ break;
|
|
|
|
+ case "PolygonImageMaterial": //图片材质
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "CrImageServerLayer": //地形服务(DEM)
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "DEM": //地形服务(DEM)
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "UrlTemplateImageryProvider": //加载URL模板服务
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "WebMapTileServiceImageryProvider": // WMTS地图服务
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "WebMapServiceImageryProvider": //WMS地图服务
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "ArcGisMapServerImageryProvider": // ArcGIS Online和Server的相关服务
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "TileMapServiceImageryProvider": // 2.5维度地图
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
|
|
+
|
|
|
|
+ if (window[options.serviceId]) {
|
|
|
|
+ viewer.flyTo(window[options.serviceId]);
|
|
|
|
+ resolve(true);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ resolve(true);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 设置服务透明度
|
|
|
|
+ * @param {Object} viewer
|
|
|
|
+ * @param {Object} options
|
|
|
|
+ */
|
|
|
|
+export function setLayersAlpha(viewer, options) {
|
|
|
|
+ let layer = new jt3dSDK.layer(viewer);
|
|
|
|
+
|
|
|
|
+ if (options.loadtype === "Cesium3DTileset") {
|
|
|
|
+ //设置实景透明度
|
|
|
|
+ layer.set3DTileStyle({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ alpha: options.alpha,
|
|
|
|
+ });
|
|
|
|
+ } else if (options.loadtype === "CrImageServerLayer") {
|
|
|
|
+ let floatLayer = window[options.serviceId];
|
|
|
|
+ floatLayer.setOpacity(options.alpha)
|
|
|
|
+ } else if (options.loadtype === "PolygonImageMaterial") {
|
|
|
|
+ //设置透明度
|
|
|
|
+ layer.setPolygonImageMaterial({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ alpha: options.alpha,
|
|
|
|
+ });
|
|
|
|
+ } else if (options.loadtype === "entitiesGltf") {
|
|
|
|
+ //设置透明度
|
|
|
|
+ layer.setModelStyle({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ alpha: options.alpha,
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ layer.setLayersStyle({
|
|
|
|
+ serviceId: options.serviceId,
|
|
|
|
+ alpha: options.alpha,
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 设置图层顺序
|
|
|
|
+ * @param {Object} imageryLayers
|
|
|
|
+ * @param {Object} options
|
|
|
|
+ */
|
|
|
|
+export function setLayerNumber(imageryLayers, options) {
|
|
|
|
+
|
|
|
|
+ // var imageryLayers = viewer.imageryLayers;
|
|
|
|
+
|
|
|
|
+ //设置图层初始顺序
|
|
|
|
+ imageryLayers.lowerToBottom(window[options.serviceId]);
|
|
|
|
+ imageryLayers.raise(window[options.serviceId]);
|
|
|
|
+ imageryLayers.raise(window[options.serviceId]);
|
|
|
|
+
|
|
|
|
+ let serviceMark=options.serviceId.split('_')[0]
|
|
|
|
+
|
|
|
|
+ getAllLayers().then(layers => {
|
|
|
|
+ layers.map((item) => {
|
|
|
|
+ if (item.layercode && item.layerorder) {
|
|
|
|
+ let id = serviceMark + "_" + item.layercode + item.layerorder
|
|
|
|
+ let startid = Number(item.layercode + item.layerorder)
|
|
|
|
+ let strid = Number(options.serviceId.replace(serviceMark + "_", ""))
|
|
|
|
+
|
|
|
|
+ if (imageryLayers.contains(window[id])) {
|
|
|
|
+ if (startid <= strid) {
|
|
|
|
+ imageryLayers.raise(window[options.serviceId])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ //底图置底
|
|
|
|
+ if (options.layertype === "底图影像") {
|
|
|
|
+ imageryLayers.lowerToBottom(window[options.serviceId]);
|
|
|
|
+ imageryLayers.raise(window[options.serviceId]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //标注置顶
|
|
|
|
+ if (options.layertype === '标注') {
|
|
|
|
+ imageryLayers.raiseToTop(window[options.serviceId]);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 移除分屏对比
|
|
|
|
+ */
|
|
|
|
+export function removeSplitScreen(viewer) {
|
|
|
|
+ let mapView1 = document.getElementById("cesiumContainer");
|
|
|
|
+ let mapView2 = document.getElementById("cesiumContainer2");
|
|
|
|
+
|
|
|
|
+ mapView1.className = "jt-map";
|
|
|
|
+ mapView2.style.display = "none";
|
|
|
|
+ mapView2.innerHTML = "";
|
|
|
|
+
|
|
|
|
+ if (viewer) {
|
|
|
|
+ viewer.entities.removeAll(); // 删除全部
|
|
|
|
+ viewer.imageryLayers.removeAll();
|
|
|
|
+ viewer.scene.primitives.removeAll(); //谨慎使用,可能删除不必要的primitive
|
|
|
|
+ viewer.destroy();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 地图绕点自旋
|
|
|
|
+ */
|
|
|
|
+export function setMapSpin(jt3d) {
|
|
|
|
+ //移除左键单击事件
|
|
|
|
+ if (jt3d.handlerLeftClick) {
|
|
|
|
+ jt3d.handlerLeftClick.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let SketchViewModel = new jt3dSDK.SketchViewModel(window.viewer, {
|
|
|
|
+ isClear: true,
|
|
|
|
+ isDrawPoint: false, //是否标记参考点
|
|
|
|
+ isRetainDrawPoint: false, //绘制完成是否保留绘制点
|
|
|
|
+ iconType: 'blue',
|
|
|
|
+ }, );
|
|
|
|
+
|
|
|
|
+ SketchViewModel.sketchTools('point', {
|
|
|
|
+ onComplete(cPoint, gPoint) {
|
|
|
|
+ jt3d.setMapSpinByPoint(cPoint, {
|
|
|
|
+ // height: 100000
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ onError(message) {}
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 地图指北
|
|
|
|
+ */
|
|
|
|
+export function setMapNorth(jt3d) {
|
|
|
|
+ jt3d.setMapNorth();
|
|
|
|
+ jt3d.isSpan = false;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 移除卷帘
|
|
|
|
+ */
|
|
|
|
+export function removeSplitLayer(viewer, earthAtLeft, earthAtRight) {
|
|
|
|
+ let sliderDiv = document.getElementById("image_slider");
|
|
|
|
+ if (sliderDiv) {
|
|
|
|
+ document.body.removeChild(sliderDiv);
|
|
|
|
+ }
|
|
|
|
+ removeSplitLayerLeft(viewer, earthAtLeft);
|
|
|
|
+ removeSplitLayerRight(viewer, earthAtRight);
|
|
|
|
+
|
|
|
|
+ if (earthAtLeft) {
|
|
|
|
+ earthAtLeft.splitDirection = Cesium.SplitDirection.NONE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (earthAtRight) {
|
|
|
|
+ earthAtRight.splitDirection = Cesium.SplitDirection.NONE;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+/**
|
|
|
|
+ * 移除左侧图层
|
|
|
|
+ */
|
|
|
|
+export function removeSplitLayerLeft(viewer, leftValue) {
|
|
|
|
+ setLayersControl(viewer, leftValue, false);
|
|
|
|
+
|
|
|
|
+ // if (earthAtLeft) {
|
|
|
|
+ // if (earthAtLeft instanceof Cesium.ImageryLayer) {
|
|
|
|
+ // viewer.imageryLayers.remove(earthAtLeft);
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (earthAtLeft instanceof Cesium.Cesium3DTileset) {
|
|
|
|
+ // viewer.scene.primitives.remove(earthAtLeft);
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (earthAtLeft instanceof Array) {
|
|
|
|
+ // earthAtLeft.forEach((res, index) => {
|
|
|
|
+ // viewer.scene.primitives.remove(res);
|
|
|
|
+ // })
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+}
|
|
|
|
+/**
|
|
|
|
+ * 移除右侧图层
|
|
|
|
+ */
|
|
|
|
+export function removeSplitLayerRight(viewer, rightValue) {
|
|
|
|
+ setLayersControl(viewer, rightValue, false);
|
|
|
|
+ // if (earthAtRight) {
|
|
|
|
+ // if (earthAtRight instanceof Cesium.ImageryLayer) {
|
|
|
|
+ // viewer.imageryLayers.remove(earthAtRight);
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (earthAtRight instanceof Cesium.Cesium3DTileset) {
|
|
|
|
+ // viewer.scene.primitives.remove(earthAtRight);
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // if (earthAtRight instanceof Array) {
|
|
|
|
+ // earthAtRight.forEach((res, index) => {
|
|
|
|
+ // viewer.scene.primitives.remove(res);
|
|
|
|
+ // });
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+}
|