外观
3.CDN方式集成到项目
1083字约4分钟
2024-12-20
Mars2D 提供了多种获取SDK类库和集成的方式,你可以根据项目的实际情况和技术栈选择以下任选其中一种方式安装。
- npm包安装方式 : 适合vue、react等Node等开发框架项目,推荐使用。
- 静态引入方式 : 适合原生项目、npm安装存在问题时、离线内网环境、所有技术栈都可以使用。
- CDN方式集成到项目 : 适合临时演示及快速开始使用,不适合生产环境(CDN存在不稳定的情况)。
1. 从 CDN 获取
CDN方式集成与静态引入方式集成到项目类似,只是引入的资源是从CDN服务器获取的,这样可以避免下载安装包,但不适合生产环境(CDN存在不稳定的情况)。
在 html 的 head 标签中引入 Mars2D 包相关 CDN 资源,有以下不同的CDN服务可以选择使用,任意选择一种即可。
1.1 淘宝npmjs.com镜像服务站
- 提供商:国内淘宝
- 官网:https://registry.npmmirror.com
- 说明:国内访问速度快且稳定,推荐使用。
<!--引入leaflet基础lib-->
<link href="https://registry.npmmirror.com/leaflet/latest/files/dist/leaflet.css" rel="stylesheet" type="text/css" />
<script src="https://registry.npmmirror.com/leaflet/latest/files/dist/leaflet.js" type="text/javascript"></script>
<!--引入mars2d库lib-->
<link href="https://registry.npmmirror.com/mars2d/latest/files/mars2d.css" rel="stylesheet" type="text/css" />
<script src="https://registry.npmmirror.com/mars2d/latest/files/mars2d.js" type="text/javascript"></script>
<!--引入mars2d库插件lib(按需引入)-->
<script src="https://registry.npmmirror.com/mars2d-esri/latest/files/mars2d-esri.js" type="text/javascript"></script>
1.2 国外unpkg.com服务
- 提供商:国外 Michael Jackson 维护的开源项目,由Cloudflare提供服务器支持。
- 官网:https://unpkg.com
- 说明:国外稳定,国内偶尔被墙。
<!--引入leaflet基础lib-->
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js" crossorigin=""></script>
<!--引入mars2d库lib-->
<link href="https://unpkg.com/mars2d@latest/mars2d.css" rel="stylesheet" type="text/css" />
<script src="https://unpkg.com/mars2d@latest/mars2d.js" type="text/javascript"></script>
<!--引入mars2d库插件lib(按需引入)-->
<script src="https://unpkg.com/mars2d-esri@latest/mars2d-esri.js" type="text/javascript"></script>
1.3 国外jsDelivr服务
- 提供商:国外一个开源的免费公共CDN平台
- 官网:jsDelivr
- 说明:国外稳定,国内偶尔被墙。
<!--引入leaflet基础lib-->
<link href="https://cdn.jsdelivr.net/npm/leaflet@latest/dist/leaflet.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.jsdelivr.net/npm/leaflet@latest/dist/leaflet.js" type="text/javascript"></script>
<!--引入mars2d库lib-->
<link href="https://cdn.jsdelivr.net/npm/mars2d@latest/mars2d.css" rel="stylesheet" type="text/css" />
<script src="https://cdn.jsdelivr.net/npm/mars2d@latest/mars2d.js" type="text/javascript"></script>
<!--引入mars2d库插件lib(按需引入)-->
<script src="https://cdn.jsdelivr.net/npm/mars2d-esri@latest/mars2d-esri.js" type="text/javascript"></script>
2. 增加DIV展示容器
在需要呈现Mars2D地图的html页面中,加上 div 容器,并注意设置 div 的 css 高宽样式(可以直接用内置样式mars2d-container
),如下:
<div id="mars2dContainer" class="mars2d-container"></div>
3. 创建地图对象
在页面js代码中,可通过window.mars2d.*
来使用 mars2d 相关类及方法。 可以增加如下代码,即可创建一个地图对象,并显示到页面中。
const mars2d = window.mars2d // 静态资源引入时,对象都是挂载在window中
const L = window.mars2d.L
// Map的参数请看API文档:http://mars2d.cn/api/Map.html
const map = new mars2d.Map("mars2dContainer", {
basemaps: [{ name: "高德地图", type: "gaode", layer: "vec", show: true }]
})
4. 完成集成
这样你的Mars2D二维地图就集成完成了,您可以预览相关页面,查看地图效果。
新窗口查看
5. 常见问题
5.1 eslint错误校验问题解决
如果是ts、eslint相关技术栈项目中,window.*
取值会存在eslint校验报错时,可以在.eslintrc.json
的globals
中增加如下配置:
.eslintrc.json
{
"root": true,
"globals": {
"L": "readonly", //增加Leaflet全局变量
"mars2d": "readonly" //增加mars2d全局变量
}
}
5.2 如果想代码中import导入mars2d,打包时实际使用CDN
如果想代码中npm安装mars2d包和import导入使用,打包实际使用CDN时。 需要参考你使用项目的技术栈情况,按相关资料及技术栈API修改配置,排除mars2d
、leaflet
的引用和打包,比如:
vue.config.js
module.exports = {
// 已忽略其他无关配置
configureWebpack: {
externals: {
"mars2d": "mars2d",
"leaflet": "L",
}
}
}
vite.config.ts
import { defineConfig } from "vite"
import { viteExternalsPlugin } from "vite-plugin-externals"
export default defineConfig({
// 已忽略其他无关配置
plugins: [
viteExternalsPlugin({
externals: {
"mars2d": "mars2d",
"leaflet": "L",
}
})
]
})