mars3d显示地图,并且完成切换地图图层的功能,使用隐藏显示去控制图层

这篇具有很好参考价值的文章主要介绍了mars3d显示地图,并且完成切换地图图层的功能,使用隐藏显示去控制图层。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何安装mars3d请看这个链接哈!

我用的是vue3
先引入mars3d

import * as mars3d from "mars3d"

创建地图的变量

let m3d:any; // 地图

在template中定义div,并且id名为cesiumBox(可以自定义)

<div id="cesiumBox" class="model"></div>

在 onMounted 中使用

let mapOptions = {
   scene: {
     center: { 
       lat: 21.210378, // 纬度值
       lng: 110.426257, // 经度值
       alt: 39192.8, // 高度值
       heading: 4.5, // 方向角度值,绕垂直于地心的轴旋转角度, 0至360
       pitch: -74.1, // 俯仰角度值,绕纬度线旋转角度,-90至90
       // roll: 0, // 翻滚角度值,绕经度线旋转角度, -90至90
     },
     scene3DOnly: false, // 为 true 时,每个几何实例将仅以3D渲染以节省GPU内存
     shadows: false, // 是否启用日照阴影
     removeDblClick: false, // 是否移除Cesium默认的双击事件
     sceneMode: 3, // 初始场景模式。可以设置进入场景后初始是2D、2.5D、3D 模式。
     showSun: true, // 是否显示太阳,如修改对象可以用 map.scene.sun
     showMoon: true, // 是否显示月亮,如修改对象可以用 map.scene.moon
     showSkyBox: true, // 是否显示天空盒,如修改对象可以用 map.scene.skyBox
     showSkyAtmosphere: true, // 是否显示地球大气层外光圈,如修改对象可以用 map.scene.skyAtmosphere
     fog: true, // 是否启用雾化效果,如修改对象可以用 map.scene.fog
     fxaa: true, // 是否开启快速抗锯齿
   },
   basemaps: [
     { name: "天地图", type: "tdt", layer: "img_d", show: true },
   ],
   control: {
     baseLayerPicker: false
   }
 };
 m3d = new mars3d.Map("cesiumBox", mapOptions);

切换地图图层的实例
在上面的实例继续添加下面代码
show为false的话是图层隐藏掉
天地图的api链接在底部

const tdt_tk = ['']; // 这个key就是你在天地图中申请的key,这个是数组形式
// 电子海图
  dzht = new mars3d.layer.ArcGisTileLayer({
    name: "电子海图",
    url: "http://www.oceanread.com:213/arcgis/rest/services/chart/chartAll/MapServer",
    show: true
  })
  
  // 影像底图
  wxt = new mars3d.layer.TdtLayer({
    layer: 'img_d',
    name: '影像底图',
    url: 'https://t{s}.tianditu.gov.cn/img_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={z}&layer=img&style=default&tilerow={y}&tilecol={x}&tilematrixset=w&format=tiles',
    key: tdt_tk,
    show: false,
    zIndex: 1
  })

  wxt2 = new mars3d.layer.TdtLayer({
    layer: 'img_z',
    name: '影像注记',
    url: 'https://t{s}.tianditu.gov.cn/cia_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={z}&layer=cia&style=default&tilerow={y}&tilecol={x}&tilematrixset=w&format=tiles',
    key: tdt_tk,
    show: false,
    zIndex: 2
  })

  // 矢量底图
  slt = new mars3d.layer.TdtLayer({
    layer: 'vec_d',
    name: '矢量底图',
    url: 'https://t{s}.tianditu.gov.cn/vec_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={z}&layer=vec&style=default&tilerow={y}&tilecol={x}&tilematrixset=w&format=tiles',
    key: tdt_tk,
    show: false,
    zIndex: 1
  })

  slt2 = new mars3d.layer.TdtLayer({
    layer: 'vec_z',
    name: '矢量注记',
    url: 'https://t{s}.tianditu.gov.cn/cva_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={z}&layer=cva&style=default&tilerow={y}&tilecol={x}&tilematrixset=w&format=tiles',
    key: tdt_tk,
    show: false,
    zIndex: 2
  })

  // 添加图层
  m3d.addLayer(dzht)
  m3d.addLayer(wxt)
  m3d.addLayer(wxt2)
  m3d.addLayer(slt)
  m3d.addLayer(slt2)

接着在 template 添加此代码

<button @click="add([0])" class="model_d">电子海图</button>
<button @click="add([1,2])" class="model_d2">影像底图</button>
<button @click="add([3,4])" class="model_d3">矢量底图</button>
const add = (index:any) => {
  
  // 获取所有的图层,不包含basemaps和layers中的图层
  const layersss =m3d.getLayers({
    basemaps:false, // 不包含basemps中配置的所有图层
    layers:false // 不包含layers中配置的所有图层
  })
  // 先隐藏所有的图层
  console.log(layersss);
  layersss.map((res:any) => {
    res.show = false
  })
  // 再指定的图层下显示
  for(let i = 0; i < index.length; i++){
    layersss[index[i]].show = true
  }
  
  // 第2种方法:使用移除图层,在添加图层
  // 一开始就不要 addLayer 图层了,直接需要哪个就添加哪个的图层就可以
  // m3d.removeLayer(dzht)
  // 矢量底图
  // dzht = new mars3d.layer.TdtLayer({
  //   layer: 'vec_d',
  //   name: '矢量底图',
  //   url: 'https://t{s}.tianditu.gov.cn/vec_w/wmts?service=WMTS&version=1.0.0&request=GetTile&tilematrix={z}&layer=vec&style=default&tilerow={y}&tilecol={x}&tilematrixset=w&format=tiles',
  //   key: tdt_tk,
  //   show: true
  // })
  // m3d.addLayer(dzht)
  
}

天地图的api
天地图的实例文章来源地址https://www.toymoban.com/news/detail-520110.html

到了这里,关于mars3d显示地图,并且完成切换地图图层的功能,使用隐藏显示去控制图层的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mars3d绘制区域范围(面+边框)

    1、图例(绿色面区域+白色边框)  2、代码 1)、绘制区域ts文件 解释: 1、new mars3d.layer.GeoJsonLayer      生成矢量图层 2、styleField       \\\"levels\\\" 是在json文件中区分不同级别景区的标志,值为1、2、3等 3、styleFieldOptions       根据styleField获取到的值进行区分,划分不同颜色的

    2024年02月15日
    浏览(48)
  • Vue2项目使用mars3d

    或参考webpack.config.js写法进行修改

    2024年02月14日
    浏览(44)
  • vue3 mars3d 天地图

                    npm i mars3d                  npm i mars3d-heatmap (热力图,需要的话安装)                 npm i -D copy-webpack-plugin                 增加mars3d目录配置,修改vue.config.js中configureWebpack里的内容如下:  使用: 最后附上天地图mapUrl地址

    2024年02月15日
    浏览(37)
  • Mars3D Studio 的使用方法

    mars3d Studio 是 mars3d 研发团队于近期研发上线的一款 场景可视化编辑平台。拥有资源存档、团队协作、定制材质等丰富的功能。可以实现零代码构建一个可视化三维场景。 (1)数据上传:目前支持 tif 影像上传、 3dtitles 、 gltf 小模型上传以及矢量数据( shp、gesojson、kml ) 下

    2023年04月16日
    浏览(102)
  • Mars3D/Cesium + VUE3

    不定期更新 参考官网: http://mars3d.cn/dev/guide/start/import.html#_3-3-vite-%E6%8A%80%E6%9C%AF%E6%A0%88%E6%97%B6-%E7%9A%84%E9%A1%B9%E7%9B%AE%E9%85%8D%E7%BD%AE%E4%BF%AE%E6%94%B9 :已亲测vite框架,可以运行,具体见下main 1、插件 vite-plugin-mars3d vite中需要

    2024年02月14日
    浏览(48)
  • [mars3d 学习] 最近升级版本造成的问题

    1、mars3d升级3.5以上,使用的时候报错; 需要看下 Mars3D三维可视化平台 | 火星科技 版本更新日志; 使用将Cesium的版本升级到1.103 2、升级Cesium到1.103,之后打包又会报错 - error in ./node_modules/mars3d-Cesium/Build/Cesium/index.js 哦,是因为cesium1.96改变了代码打包方式;在vue2中就会存在

    2024年02月17日
    浏览(67)
  • Mars3d项目启动上的一些坑

    最近新入职了一家公司,公司新开了有个未来城市的项目,需要用到3D城市建模,公司老总选了Mars3d作为前端框架,项目分给我了,又是一个全新的领域,开搞吧! 下面是自己遇到的几个小问题,记录一下: 1 npm install copy-webpack-plugin --save -dev 时报错 解决办法:npm install cop

    2024年02月05日
    浏览(46)
  • Mars3D使用过程遇到的问题记录【持续更新】

    需要标注线面的角度heading 2022年6月23日 heading计算方式: https://turfjs.fenxianglu.cn/ 计算两点之间的角度 直接F12在控制台可以计算 eg: 加载gltf模型,模型是透明的,需要改为不透明 2022年6月23日 用文本编辑器打开.gltf,把里面的\\\"alphaMode\\\":\\\"BLEND\\\"改成\\\"alphaMode\\\":\\\"OPAQUE\\\" 模型旋转之后,标

    2024年02月08日
    浏览(59)
  • vue3+vite项目集成mars3d

    创建一个项目 yarn create vite // vue - ts 安装依赖 yarn add vite-plugin-mars3d -D yarn add mars3d 控制台警告 warning \\\" mars3d@3.5.0\\\" has unmet peer dependency \\\"@turf/turf@^6.5.0\\\". warning \\\" mars3d@3.5.0\\\" has unmet peer dependency \\\"mars3d-cesium@~1.103.1\\\". 安装 yarn add  @turf/turf mars3d-cesium 修改 vite.config.ts 修改srcApp.vue 就可

    2024年02月15日
    浏览(48)
  • Mars3d采用ellipsoid球实现模拟地球旋转效果

    1.Mars3d采用ellipsoid球实现模拟地球旋转效果 2.开始自选装之后,模型一直闪烁 http://mars3d.cn/editor-vue.html?id=graphic/entity/ellipsoid 3.相关代码:   4.采用属性机制即可实现球体模拟地球旋转的效果: 采用属性机制即可

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包