使用前须知
推荐:从github上下载源码工程上修改组件更方便。
npm安装下的lib介绍:
- index.js : 完整组件js文件,import方式引用。
- index.min.js :完整组件js文件,CDN方式引用,绑定在window对象的webgl3d属性。
- index_basis.js : 完整组件功能实现js库,import方式引用。
- index_basis.min.js: 完整组件功能实现js库,CDN方式引用,绑定在window对象的webgl3d_mc属性。
- 其他js文件:包括拖动指令,语言资源,及其他各功能按需引入的js文件。
使用说明
将从以下几个方面简单介绍使用自定义组件方式
1. NPM方式使用
举例:
// 在main.js
import webgl3d_mc from "@supermap/iclient3d-vue-for-webgl/lib/index_basis.js" //先引入
window.webgl3d_mc = webgl3d_mc; //便于全局调用
// 在自定义组件的地方使用
setup(props) {
let { digTerrain, clearDig } = webgl3d_mc.terrainOperation(props); //函数返回值参调用方式,其他返回参考该组件文档
return { digTerrain, clearDig }
}
2. CDN方式使用
同样以地形开挖为例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<!-- vue-->
<script src="https://www.supermapol.com/earth/vue-iEarth/examples/public/js/vue.global.prod.js"></script>
<!-- cesium -->
<link href="https://www.supermapol.com/earth/vue-iEarth/examples/public/Cesium/Widgets/widgets.css"
rel="stylesheet">
<script src="https://www.supermapol.com/earth/vue-iEarth/examples/public/Cesium/Cesium.js"></script>
<!-- 组件库-->
<script src="https://www.supermapol.com/earth/vue-iEarth/examples/dist/components_basis.js"></script>
<title>自定义组件-CDN引入-demo</title>
</head>
<style>
html,
body,
#app,
#cesiumContainer {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.demo {
position: absolute;
top: 50px;
right: 100px;
background-color: rgb(253, 252, 252);
padding: 5px;
}
</style>
<body>
<div id="app">
<div id="cesiumContainer"></div>
<div class="demo">
<h3>自定义界面</h3>
<button @click="digTerrain">开挖</button>
<button @click="clearDig" style="margin-left: 8px;">清除</button>
</div>
</div>
<script>
const app = Vue.createApp({
setup(props) {
//初始化地球和加载测试地形场景
Vue.onMounted(() => {
viewer = new Cesium.Viewer("cesiumContainer");
viewer.scene.open('http://www.supermapol.com/realspace/services/3D-ZF_normal/rest/realspace');
});
// 引入组件功能函数
let { digTerrain, clearDig } = webgl3d_mc.terrainOperation(props)
return { digTerrain, clearDig }
}
});
app.mount("#app");
</script>
</body>
</html>
3. 下载github源码
直接在源码上修改或重构需要的组件。
TIP
- 源码默认启动是范例程序,当只需对单个组件进行调试,可以在index.html中修改路径,在App.vue 中使用标签调用。
- 自定义组件时,当组件需要提供props时别忘了传给调用的函数,否则使用组件时设置修改某属性无效。
initDrag
说明:拖拽指令。 使用方式:
//注册指令
webgl3d_mc.initDrag(app);
//在标签上使用
<div v-drag> 可以拖拽
<div v-stopdrag> 禁止拖拽</div>
</div>
tool
说明:一些工具函数。
接口:
(1) Message:消息提示。
- Message.errorMsg('错误提示)。Message.warnMsg('警告提示)。Message.successMsg('成功提示)。
(2) axiosJsonp:拓展axios支持jsonp。
axiosJsonp(url).then((result)=>{console.log(result)})
(3)isEqualArr:判断两个数组每一项是否相等。
- isEqualArr(arr1,arr2) ==> return true/false
(4) CartesiantoDegrees:笛卡尔转经纬度
CartesiantoDegrees(Cartesians) //返回经纬度数组[]
(5) CartesiantoDegreesObjs:笛卡尔转经纬度(每个点是独立的对象)
CartesiantoDegreesObjs(Cartesians) //返回经纬度数组[{},{}···]
(6) unique:数组去重函数。unique(arr) 返回新数组。
(7) gradientColors:获取渐变色函数。
gradientColors(start, end, steps, gamma) //开始颜色,结束颜色,分成多少份,透明度
//返回数组['#123456',···]
(8) getAngleAndRadian:获取两点的角度和弧度。
getAngleAndRadian(pointA, pointB)
// return {angle,radian};
(9) CartographictoDegrees:弧度转经纬度。
CartographictoDegrees(wgsPosition) ==> return [longitude, latitude, height];
layerManagement
说明:封装了常用图层管理的函数。
接口: (1) addS3mLayers:添加s3m图层。
addS3mLayers(scps, callback) //scps:[{ url, options:{name}]} ;callback(layers) ; 无返回值
(2) addScene:添加场景。
addScene(url, options, callback) //无返回值options:{SceneToken,autoSetView}; autoSetView:true/false(自动定位)
(3) addTerrainLayer:添加地形。
addTerrainLayer(LayerURL, isSct)
(4) addImageLayer:添加影像。
addImageLayer(LayerURL) // 返回img图层layer
(5) addMvtLayer:添加矢量图层。
addMvtLayer(LayerURL, name, callback) // 返回layer
(6) layersDelete:删除图层。
layersDelete(type, id_name, callback) //type:S3M/IMG/TERRAIN/MVT; id_name:图层名称(影像可以是id)
camera
说明:封装了一部分相机操作的函数
接口: (1) flyByCameraParam:飞向指定相机参数的位置
flyByCameraParam (cameraParam) //cameraParam:{Cartesian3,heading,pitch,roll}
(2) flyByLayerName:飞向指定名称的图层
flyByLayerName(type, id_name) //type:S3M/IMG/MVT; id_name:图层名称(影像可以是id)
例举所有组件功能函数,返回值参考具体功能文档部分。
initViewer:初始化地球
地形
terrainOperation:地形操作,包含地形开挖与地形修改
terrainSlope:地形坡度坡向
terrainIsoline:地形等值线
terrainFlood:地形淹没分析
裁剪
clipBoxEditor:裁剪box交互
clipPolygon:裁剪多边形
clipPlane:裁剪平面
clipCross:裁剪Cross
分析
measure:量算
skyLine:天际线分析
shadowquery:阴影分析
viewshed:可视域分析
profile:剖面分析
sightLine:通视分析
openness:开敞度分析
spatialQuery3d:三维(GPU)查询分析
场景
splitScreen:分屏
roller:卷帘
sceneAttribute:场景属性
facade:立面图
compass:罗盘
flyRoute:飞行路线 modelFlood:模型淹没分析
geologicalBody:地质体模型
volume:体渲染
projection:视频投放
light:添加灯光
图层
layerManage:图层管理
mvtlayerStyle: mvt图层
s3mlayerAttribute:s3m图层属性
s3mlayerStyle:s3m图层风格
s3mlayerOperation:s3m图层操作
photography:倾斜摄影模型操作
imglayerAttribute:影像图层属性
绘制与特效
drawLineSurface:绘制线面
symbol:添加符号
scanEffect:扫描线
particle:粒子火焰喷泉