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

这篇具有很好参考价值的文章主要介绍了mars3d绘制区域范围(面+边框)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、图例(绿色面区域+白色边框)

mars3d绘制区域范围(面+边框),Mars3d,javascript,前端,开发语言

 2、代码

1)、绘制区域ts文件

import { mapLayerCollection } from '@/hooks/cesium-map-init'
/**
 * 安全防護目標
 * @param map
 */
export const addSafetyProtection = async (map) => {
    const coverDatas = await mapLayerCollection.value.safety_protection.formatter()
    if (coverDatas) {
        const graphicLayer = new mars3d.layer.GeoJsonLayer({
            name: mapLayerCollection.value.safety_protection.label,
            data: coverDatas,
            symbol: {
                styleField: 'levels',
                styleFieldOptions: {
                    '1': { color: '#0ec758' },
                    '2': { color: '#0ec758' },
                    '3': { color: '#0ec758' },
                },
                styleOptions: {
                    clampToGround: true,
                    classificationType: Cesium.ClassificationType.BOTH,
                    distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 20000),
                    outline: true,
                    outlineColor: Cesium.Color.WHITE,
                    outlineWidth: 0.9,
                    opacity: 0.6,
                },
                merge: true,
            },
        })
        mapLayerCollection.value.safety_protection.initLayer(map, graphicLayer)
    }
}

解释:

1、new mars3d.layer.GeoJsonLayer

     生成矢量图层

2、styleField

      "levels" 是在json文件中区分不同级别景区的标志,值为1、2、3等

3、styleFieldOptions

      根据styleField获取到的值进行区分,划分不同颜色的区域

4、styleOptions

  • clampToGround:布尔值,表示是否将对象固定在地表上。如果设置为true,对象将贴合到地表上,不会浮在地表之上。
  • classificationType:枚举值,定义对象的分类类型。                                                  可选值有NONETERRAINCESIUM_3D_TILEBOTH。                                                   1)、NONE表示对象不进行分类,                                                                             2)、TERRAIN表示对象只在地形表面上显示,                                                         3)、CESIUM_3D_TILE表示对象只在3D瓦片上显示,                                                 4)、BOTH表示对象同时在地形和3D瓦片上显示。
  • distanceDisplayCondition:定义对象的可见距离条件。它接受一个 Cesium.DistanceDisplayCondition 对象,其中包含两个距离参数,表示对象的最小和最大可见距离。对象只有在距离相机在这个范围内时才可见。
  • outline:布尔值,表示是否给对象添加轮廓线。
  • outlineColor:定义对象轮廓线的颜色。可以使用 Cesium.Color 对象来指定颜色。
  • outlineWidth:定义对象轮廓线的宽度。
  • opacity:定义对象的不透明度,取值范围为0到1,其中0表示完全透明,1表示完全不透明。
  • merge 是一个额外的属性,它用于指示是否将当前样式选项与现有的样式进行合并。如果设置为true,当前样式将与现有的样式合并,否则会覆盖现有的样式。

2)、矢量图层加载

export const mapLayerCollection = ref({
   safety_protection: {
        label: '防护目标',
        code: '23',
        // url: import.meta.env.VITE_BASE_URL + 'static/data/' + window.globalConfig.tag + '/safety-protection.json',
        initLayer: function (map, graphicLayer = {}) {
            map.addLayer(graphicLayer)
            this.init = true
            // return graphicLayer
        },
        formatter: getSafety,
        show: true,
        edit: false,
        init: false,
    }
})

// 注意:formatter: getSafety这个是封装出去的
const getSafety = async () => {
    const url = import.meta.env.VITE_BASE_URL + 'static/data/' + window.globalConfig.tag + '/safety-protection.json'
    const [err, data] = await to(getUrl(url))
    if (err) return []
    return data
}


// 解释:
1、url是在地图上绘制区域生成的json文件
   1)、import.meta.env.VITE_BASE_URL  【是好多个景区使用这个项目,所以地址前面是动态生成的】
   2)、'static/data/'    【文件实在vue3项目下的】public/static/data/中的
   3)、景区的名称也是动态生成的     
   4)、'/safety-protection.json'这个就是生成的JSON文件
2、const [err, data] = await to(getUrl(url))     调取后台接口获取数据

3)、在map.vue引用addSafetyProtection ()方法即可文章来源地址https://www.toymoban.com/news/detail-618849.html

到了这里,关于mars3d绘制区域范围(面+边框)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Vue2项目使用mars3d

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

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

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

    2024年02月15日
    浏览(36)
  • [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日
    浏览(61)
  • Mars3d项目启动上的一些坑

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

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

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

    2024年02月08日
    浏览(56)
  • vue3使用Mars3D写区块地图

    因为我也是第一次使用,所以我是把插件和源文件都引入了,能使用启动 源文件 下载地址: http://mars3d.cn/download.html 放入位置 在index.html中引入 引入插件 我是封装的组件,代码的使用和意义 我直接放在备注中 大体布局 父组件 添加地图内部数据和地图外部数据的方法 ,我都

    2024年01月20日
    浏览(49)
  • 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日
    浏览(47)
  • Mars3d采用ellipsoid球实现模拟地球旋转效果

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

    2024年02月16日
    浏览(47)
  • vue集成mars3d后,basemaps加不上去

    首先: template   div id=\\\"centerDiv\\\" class=\\\"mapcontainer\\\"     mars-map :url=\\\"configUrl\\\" @οnlοad=\\\"onMapload\\\" /   /div /template script import MarsMap from \\\'../components/mars-work/mars-map.vue\\\' import * as mars3d from \\\'mars3d\\\' //npm install mars3d-echarts --save import \\\'mars3d-echarts\\\' const Cesium = mars3d.Cesium export default {   // eslint-disabl

    2024年02月10日
    浏览(37)
  • 关于Mars3D创建多图层以及图标重复加载方法

    这是一个困扰我好几次的问题了,今天就给他彻底解决了 我们需要的效果如下  但是第一遍是正确的,如果再点击一次上方按钮呢?他会不会出I现两次呢,如果是出现两次的话,input框还能控制显示隐藏吗? 答案是:可以,但是,他只能控制一次,就比如说,我点击了两次

    2024年02月08日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包