赞
踩
mars3d是火星科技 研发的一款基于 WebGL 技术实现的三维客户端开发平台,可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化。
Mars3D 提供了多种安装方式,你可以根据项目的实际情况和技术栈选择以下任意一种方式安装。
接下来我们将分别介绍这些安装方式,以及下载后的目录结构。
使用Node环境下的现代web前端技术栈时,可以使用npm或cnpm或yarn等方式来安装mars3d包
- //安装mars3d主库
- npm install mars3d --save
-
- //安装mars3d插件(按需安装)
- npm install mars3d-space --save
安装后在相关使用文件中引入使用即可
- import 'mars3d/dist/mars3d.css'
- import * as mars3d from 'mars3d'
-
- //导入mars3d插件(按需使用,需要先npm install)
- import 'mars3d-space'
详见在项目中引入 Mars3D, 您也可以参考 vue最简项目模板 、 react最简项目模板 、 angular最简项目模板
在html的head标签中引入Mars3D包相关CDN资源.
- <!--引入cesium基础lib-->
- <link href="https://unpkg.com/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://unpkg.com/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
- <script src="https://unpkg.com/@turf/turf/turf.min.js" type="text/javascript" ></script>
-
- <!--引入mars3d库lib-->
- <link href="https://unpkg.com/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="https://unpkg.com/mars3d/dist/mars3d.js" type="text/javascript" ></script>
-
-
- <!--引入mars3d库插件lib(按需引入)-->
- <script src="https://unpkg.com/mars3d-space/dist/mars3d-space.js" type="text/javascript" ></script>
-
- <!--引入cesium基础lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
- <script src="https://unpkg.com/@turf/turf/turf.min.js" type="text/javascript" ></script>
-
- <!--引入mars3d库lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.js" type="text/javascript" ></script>
-
-
- <!--引入mars3d库插件lib(按需引入)-->
- <script src="https://cdn.jsdelivr.net/npm/mars3d-space/dist/mars3d-space.js" type="text/javascript" ></script>
-
引入后在相关使用文件中直接使用window.mars3d
对象即可 。
public/index.html
文件,可以参考 Vue最简项目CDN版可以在Mars3D官网 下载 mars3d离线包 后在本地项目中引入相对路径资源来使用。
将下载的SDK放在项目目录内,使用方式与上面2种基本相同,区别在于url路径是本地项目的相对路径。
#3.1 类似CDN的head静态资源方式引入
- <!--引入cesium基础lib-->
- <link href="./lib/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="./lib/Cesium/Cesium.js" type="text/javascript" ></script>
- <script src="./lib/turf/turf.min.js" type="text/javascript" ></script>
-
- <!--引入mars3d库lib-->
- <link href="./lib/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="./lib/mars3d/dist/mars3d.js" type="text/javascript" ></script>
-
- <!--引入mars3d库插件lib(按需引入)-->
- <script src="./lib/mars3d/plugins/space/mars3d-space.js" type="text/javascript" ></script>
-
#3.2 类似npm的import方式导入
- import './lib/mars3d/mars3d.css'
- import * as mars3d from './lib/mars3d/mars3d.js'
如果引入本地版本build
编译很慢时,可以按下面配置修改babel.config.js
- module.exports = {
- //已忽略其他配置
- ignore: [
- './src/components/Map/lib/mars3d/' //改成自己的本地地址
- ]
- }
引入后的具体的使用请参考 下一篇教程 说明。
Mars3D 支持多种下载方式,可以在下一篇教程安装中查看所有方式。这里,我们以从 jsDelivr CDN 上获取为例,介绍如何快速安装。
关于这些文件的介绍,可以在下一篇教程安装中了解更多信息。
新建一个 index.html
文件,内容如下:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <!--引入cesium基础lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
- <!--引入mars3d库lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.js" type="text/javascript" ></script>
- </head>
- </html>
打开这个 index.html
,你会看到一片空白。但是不要担心,打开控制台确认没有报错信息,并有正确的mars3d版本等信息提示,就可以进行下一步。
在绘三维地球前我们需要为 Mars3D 准备一个定义了高宽的 DOM 容器。在刚才的例子 </head>
之后,添加:
- <body>
- <!-- 为 Mars3D 准备一个定义了宽高的 DOM -->
- <div id="mars3dContainer" class="mars3d-container"></div>
- </body>
然后就可以通过 new mars3d.Map 方法初始化一个 mars3d 实例并通过传入 mapOptions 参数生成一个简单的三维地球,下面是完整代码。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>mars3d</title>
- <!--引入cesium基础lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
- <!--引入mars3d库lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.js" type="text/javascript" ></script>
- </head>
- <body>
- <!-- 为 Mars3D 准备一个定义了宽高的 DOM -->
- <div id="mars3dContainer" class="mars3d-container"></div>
- <script type="text/javascript">
- var mapOptions = {} //支持的参数请看API文档:http://mars3d.cn/api/Map.html
- var map = new mars3d.Map('mars3dContainer', mapOptions)
- </script>
- </body>
- </html>
这样你的第一个三维地球就诞生了!
可以根据您自己的技术栈使用情况,获取 Mars3D 进行下载或引入Mars3D库到自己的项目中去使用。
在html的head标签中引入Cesium官方包和Mars3D包相关资源,此方法比较简单,不会出现各类集成问题,引入资源后在代码即可通过window.mars3d
来使用相关mars3d类及方法。
在线CDN版本:
- <!--引入cesium基础lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
- <script src="https://unpkg.com/@turf/turf/turf.min.js" type="text/javascript" ></script>
-
- <!--引入mars3d库lib-->
- <link href="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="https://cdn.jsdelivr.net/npm/mars3d/dist/mars3d.js" type="text/javascript" ></script>
-
- <!--引入mars3d库插件lib(按需引入)-->
- <script src="https://cdn.jsdelivr.net/npm/mars3d-space/dist/mars3d-space.js" type="text/javascript" ></script>
-
本地版本(下载链接 ):
- <!--引入cesium基础lib-->
- <link href="./lib/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="./lib/Cesium/Cesium.js" type="text/javascript" ></script>
- <script src="./lib/turf/turf.min.js" type="text/javascript" ></script>
-
- <!--引入mars3d库lib-->
- <link href="./lib/mars3d/dist/mars3d.css" rel="stylesheet" type="text/css" />
- <script src="./lib/mars3d/dist/mars3d.js" type="text/javascript" ></script>
-
- <!--引入mars3d库插件lib(按需引入)-->
- <script src="./lib/mars3d/plugins/space/mars3d-space.js" type="text/javascript" ></script>
-
public/index.html
文件,可以参考 Vue最简项目CDN版使用Node环境下的现代web前端技术栈时,可以使用npm等来安装mars3d包并import导入后来使用。
- //引入npm版本时
- import 'mars3d/dist/mars3d.css'
- import * as mars3d from 'mars3d'
-
- //引入下载的本地版本时
- // import './lib/mars3d/mars3d.css'
- // import * as mars3d from './lib/mars3d/mars3d.js'
-
- //导入mars3d插件(按需使用,需要先npm install)
- import 'mars3d-space'
-
- //可以绑定下vue原型链,可以全局使用
- Vue.prototype.mars3d = mars3d;
-
- //在具体使用的vue等文件中
- //直接使用 this.mars3d 进行相关调用。
因为mars3d所依赖的Cesium是一个多文件资源的js库,需要对其依赖的一些资源文件进行拷贝处理(这也是容易出问题的地方), 下面已Webpack
技术栈为例,vue等其他技术栈类似(可以参考开源项目清单内下载后的项目模板对应README说明处理)。
npm install copy-webpack-plugin -save --dev
- // webpack.config.js
- const path = require('path')
- const webpack = require('webpack')
- const CopyWebpackPlugin = require('copy-webpack-plugin')
-
- const cesiumSourcePath = 'node_modules/mars3d-cesium/Build/Cesium/' //cesium库目录
- let cesiumRunPath = './cesium/'//cesium运行时主目录
-
- module.exports = {
- plugins: [
- //标识cesium资源所在的主目录,cesium内部资源加载、多线程等处理时需要用到
- new webpack.DefinePlugin({
- CESIUM_BASE_URL: JSON.stringify(cesiumRunPath)
- }),
- //cesium相关资源目录需要拷贝到系统目录下面
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Workers'), to: path.join(cesiumRunPath, 'Workers') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Assets'), to: path.join(cesiumRunPath, 'Assets') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'ThirdParty'), to: path.join(cesiumRunPath, 'ThirdParty') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Widgets'), to: path.join(cesiumRunPath, 'Widgets') }])
- ],
- }
或
- // vue.config.js
- const path = require('path')
- const webpack = require('webpack')
- const CopyWebpackPlugin = require('copy-webpack-plugin')
-
-
- module.exports = {
- configureWebpack: (config) => {
- let cesiumSourcePath = 'node_modules/mars3d-cesium/Build/Cesium/' //cesium库目录
- let cesiumRunPath = config.output.publicPath || './cesium/' //cesium运行时主目录
- let plugins = [
- //标识cesium资源所在的主目录,cesium内部资源加载、多线程等处理时需要用到
- new webpack.DefinePlugin({
- CESIUM_BASE_URL: JSON.stringify(cesiumRunPath)
- }),
- //cesium相关资源目录需要拷贝到系统目录下面
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Workers'), to: path.join(config.output.path, cesiumRunPath, 'Workers') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Assets'), to: path.join(config.output.path, cesiumRunPath, 'Assets') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'ThirdParty'), to: path.join(config.output.path, cesiumRunPath, 'ThirdParty') }]),
- new CopyWebpackPlugin([{ from: path.join(cesiumSourcePath, 'Widgets'), to: path.join(config.output.path, cesiumRunPath, 'Widgets') }])
- ]
-
- config.plugins = [
- ...config.plugins,
- ...plugins
- ]
- },
- //已省略其他配置
- }
-
90% 的集成问题都是出现在这对cesium库的拷贝处理上,项目运行没有正确识别Cesium主目录造成各种问题。
如果上一步无法正常运行项目,也可以通过CDN方式引入Cesium,并还原上一步骤“修改项目配置”的所有配置。
mars3d库可以在import引入的方式下,兼容识别CDN引入的Cesium库。
- <!--引入cesium基础lib-->
- <link href="https://unpkg.com/mars3d-cesium/Build/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" />
- <script src="https://unpkg.com/mars3d-cesium/Build/Cesium/Cesium.js" type="text/javascript" ></script>
在需要呈现地图的页面或相关组件中,加上div容器,并注意设置div的css高宽样式。
<div id="mars3dContainer" class="mars3d-container"></div>
使用Map地图类 类创建三维地图场景。
- var mapOptions = {} //支持的参数请看API文档:http://mars3d.cn/api/Map.html
- var map = new mars3d.Map('mars3dContainer', mapOptions)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。