import mapConfig from './mapConfig';
|
import mapData from './mapData';
|
import mapServer from './mapServe';
|
import * as turf from '@turf/turf';
|
import store from '@/store';
|
const mapInit = {
|
async Init() {
|
window.earthCtrl = new SmartEarth.EarthCtrl('sdkContainer', {
|
// 隐藏默认底图
|
defaultImagery: false,
|
// 隐藏logo
|
printLog: false,
|
// sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D
|
StaticFileBaseUrl: '/CimSDK/',
|
});
|
// 初始化Cesium
|
window.Cesium = SmartEarth.Cesium;
|
// 初始化Viewer
|
window.Viewer = earthCtrl.viewer;
|
//设置地球颜色
|
Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9');
|
Viewer.imageryLayers.removeAll()
|
// 地形加载
|
const terrain = config.terrain;
|
if (terrain.isShow && terrain.isUrl) {
|
const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(terrain.isUrl, {
|
requestWaterMask: true,
|
requestVertexNormals: true,
|
});
|
|
Viewer.terrainProvider = terrainProvider;
|
}
|
// Viewer.scene.screenSpaceCameraController.maximumZoomDistance =50000
|
// 默认设置底图
|
this.addImageLayer();
|
// 添加鼠标点击事件
|
this.addMapClick();
|
},
|
addImageLayer() {
|
const baseLayer = mapData.baseLayer;
|
// 添加天地图底图
|
// mapServer.addLayer({
|
// serveType: 'tdMap',
|
// url: baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl,
|
// });
|
|
mapServer.addLayer({
|
serveType: 'WMS',
|
url: config.geoServer.layers[1],
|
});
|
// 添加天地图标注
|
// mapServer.addLayer({
|
// serveType: 'tdMap',
|
// url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
|
// });
|
// 初始化视角
|
this.setdefaultPerspective();
|
},
|
setdefaultPerspective() {
|
mapConfig.sertCameraTo(mapData.defaultPerspective);
|
},
|
addMapClick() {
|
// 为viewer添加鼠标点击事件监听
|
Viewer.screenSpaceEventHandler.setInputAction((event) => {
|
// 获取点击位置的世界坐标
|
var pickedFeature = Viewer.scene.pick(event.position);
|
if (Cesium.defined(pickedFeature)) {
|
console.log(pickedFeature);
|
if (pickedFeature.id) {
|
const obj = pickedFeature.id;
|
var arr=[];
|
for(var key in obj){
|
arr.push({
|
name: key,
|
val: obj[key],
|
});
|
store.dispatch('mapLayers/changeMapInfo', []);
|
if (arr.length > 0) {
|
store.dispatch('mapLayers/changeMapInfo', arr);
|
}
|
}
|
}
|
}
|
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
|
},
|
};
|
export default mapInit;
|