cesium vue2-cli2x配置

Posted 登陆太阳计划

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cesium vue2-cli2x配置相关的知识,希望对你有一定的参考价值。

安装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.pro.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 terrain
cesiumViewer.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);

}

完成!

以上是关于cesium vue2-cli2x配置的主要内容,如果未能解决你的问题,请参考以下文章

039:cesium加载Natural Earth II地图

042:cesium加载Eris地图(多种形式)

cesium配置node.js方法

cesium初探之加载三维模型

cesium屏蔽掉一些默认设置(基础篇)

Cesium鼠标事件