装置Cesium
npm i cesium --save
配置
webpack.base.conf.js
减少别名( cesium: path.resolve(__dirname, '../node_modules/cesium/Source') )
resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), cesium: path.resolve(__dirname, '../node_modules/cesium/Source') } },
module 增加属性 unknownContextCritical: false,否则会报上面这个error:
require function is used in a way in which dependencies cannot be statically
module: {..... unknownContextCritical: false, .....}
webpack.dev.conf.js
plugins: [.... // Copy Cesium Assets, Widgets, and Workers to a static directory new CopyWebpackPlugin([ { from: path.join('node_modules/cesium/Source', '../Build/Cesium/Workers'), to: 'Workers' } ]), new CopyWebpackPlugin([ { from: path.join('node_modules/cesium/Source', 'Assets'), to: 'Assets' } ]), new CopyWebpackPlugin([ { from: path.join('node_modules/cesium/Source', 'Widgets'), to: 'Widgets' } ]), new webpack.DefinePlugin({ // Define relative base path in cesium for loading assets CESIUM_BASE_URL: JSON.stringify('') }),...]
webpack.dev.conf.js
const cesiumSource = 'node_modules/cesium/Source'const cesiumWorkers = '../Build/Cesium/Workers'plugins: [... /* cesium */ new CopyWebpackPlugin([ { from: path.join(cesiumSource, cesiumWorkers), to: 'Workers' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Assets'), to: 'Assets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'Widgets'), to: 'Widgets' } ]), new CopyWebpackPlugin([ { from: path.join(cesiumSource, 'ThirdParty/Workers'), to: 'ThirdParty/Workers' } ]), new webpack.DefinePlugin({ // Define relative base path in cesium for loading assets // 定义 Cesium 从哪里加载资源,如果应用默认的'',却变成了绝对路径了,所以这里应用'./',应用相对路径 CESIUM_BASE_URL: JSON.stringify('./') }),...]
留神应用的时候引入的形式为reqiure.
Cesium1.6X版当前不再反对es6import
var Cesium = require("cesium/Cesium");import "cesium/Widgets/widgets.css";
组件内应用
export const initCesium = () => {
{
window.cesiumViewer = new Cesium.Viewer("cesiumContainer", { useDefaultRenderLoop: false, animation: false, baseLayerPicker: false, fullscreenButton: false, geocoder: false, homeButton: false, infoBox: false, sceneModePicker: false, selectionIndicator: false, timeline: false, navigationHelpButton: false, terrainShadows: Cesium.ShadowMode.DISABLED, //高德图层 imageryProvider: new Cesium.UrlTemplateImageryProvider({ url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}", }),});// // label//高德地图标注cesiumViewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: "http://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8", }));// load the terraincesiumViewer.terrainProvider = Cesium.createWorldTerrain({ requestVertexNormals: true, requestWaterMask: true,});let cp = new Cesium.Cartesian3( 4303414.154026048, 552161.235598733, 4660771.704035539);cesiumViewer.camera.setView({ destination: cp, orientation: { heading: 10, pitch: -Cesium.Math.PI_OVER_TWO * 0.5, roll: 0.0, },});//去除水印setTimeout(() => { cesiumViewer._cesiumWidget._creditContainer.style.display = "none"; // clear the watermark mark}, 0);
}
实现!