Mars3D手把手开发教程(vue3)

vue3 + vite + ts 集成mars3d vue+ vite +ts 集成mars3d 阅读详情
AI摘要

本文介绍了Mars3D,它是基于WebGL的三维客户端开发平台,支持多行业扩展。详细讲述了在Vue3项目中集成Mars3D的步骤,还包括地图点位标注、热力图、地图面分布以及地图放大展示点位名称等操作,帮助开发者掌握Mars3D的基础应用。

1. Mars3D是什么?

Mars3D三维可视化平台 是火星科技 (opens new window)研发的一款基于 WebGL 技术实现的三维客户端开发平台,基于Cesium (opens new window)优化提升与B/S架构设计,支持多行业扩展的轻量级高效能GIS开发平台,能够免安装、无插件地在浏览器中高效运行,并可快速接入与使用多种GIS数据和三维模型,呈现三维空间的可视化,完成平台在不同行业的灵活应用。

为企业提供敏捷高效的数字孪生可视化开发能力,助力企业加速数字化转型

2.Vue3项目中集成mars3D

(1)安装依赖

npm install vite-plugin-mars3d --save-dev

(2)修改 vite.config.ts 配置文件

(3)新建一个map.ts文件,底下代码直接复制

import * as mars3d from "mars3d"
import { Cesium } from "mars3d"

import "mars3d/dist/mars3d.css";
import "mars3d-cesium/Build/Cesium/Widgets/widgets.css";

// 定义全局地图变量
export let map: mars3d.Map | null = null;
//必须有这两行css,否则地球出来了,样式还是乱的
export function initMap() {
  // 创建三维地球场景
  map = new mars3d.Map("mars3dContainer", {
    scene: {  
       center: { lat: 30.054604, lng: 108.885436, alt: 17036414, heading: 0, pitch: -90 },// 初始视角中心点和方向  
        showSun: true, // 显示太阳  
        showMoon: true, // 显示月亮  
        showSkyBox: true, // 显示天空盒  
        showSkyAtmosphere: false, // 关闭球周边的白色轮廓  
        fog: true, // 开启雾效  
        fxaa: true, // 开启FXAA抗锯齿  
        globe: {  
          showGroundAtmosphere: false, // 关闭球表面的大气效果  
          depthTestAgainstTerrain: false,  
          baseColor: "#546a53" // 球体基础颜色  
        },  
        cameraController: {  
          zoomFactor: 3.0, // 缩放因子  
          minimumZoomDistance: 1, // 最小缩放距离  
          maximumZoomDistance: 50000000, // 最大缩放距离  
          enableRotate: true, // 允许旋转  
          enableZoom: true // 允许缩放  
        },  
        mapProjection: mars3d.CRS.EPSG3857, // 地图投影方式,这里是墨卡托投影  
        mapMode2D: Cesium.MapMode2D.INFINITE_SCROLL // 2D模式下,地图可以无限滚动  
      },
    control: {
      baseLayerPicker: true, // basemaps底图切换按钮
      homeButton: false, // 视角复位按钮
      sceneModePicker: false, // 二三维切换按钮
      navigationHelpButton: false, // 帮助按钮
      fullscreenButton: true, // 全屏按钮
      contextmenu: { hasDefault: false } // 右键菜单
    },
    terrain: {  
        url: "//data.mars3d.cn/terrain", // 地形数据的URL  
        show: true // 显示地形  
      },
    basemaps: [
      {
          name: "暗色底图",
          type: "gaode",
          icon: "img/basemaps/blackMarble.png",
          layer: "vec",
          invertColor: true,
          filterColor: "#4e70a6",
          brightness: 0.6,
          contrast: 1.8,
          gamma: 0.3,
          hue: 1,
          saturation: 0
          show: true
      }
    ] as any,
  })
  return map
}

(4)新建地图盒子,引入map.ts文件

<template>
 <div>
    <div id="mars3dContainer" class="mars3d-container"></div>
  </div>
</template>
<script setup lang="ts">

import { onMounted, ref } from 'vue';
import * as mars3d from "mars3d"
import { initMap,map  } from "../map";
//加载地图
onMounted(() => {
    initMap();
});
<style scoped lang="scss">
.mars3d-container {
    width: 100%;
    height: 100%;
}
</style>

自此,一个美丽的地图就出来了

 (5)如果要将视角移动到你设置的城市那里,改写map.ts文件中这个

(6)想要更换地图,更改map.ts文件中的basemaps更换底图,什么天地图,高德图,百度图,蓝色黑色地图等等

 

3.地图点位标注

创建图层-将图层添加到地图-创建点位对象-将点对象添加到图层 

<template>
    <div>
        <div id="mars3dContainer" class="mars3d-container"></div>
    </div>
</template>
<script setup lang="ts">
        import { onMounted, ref } from 'vue';
        import * as mars3d from "mars3d"
        import { initMap, map } from "../map";
        import tb from '@/assets/image/hyfw.png'
        const arr = [
            { grid: '{"type":"Point","coordinates":[109.006887,34.232718]}', name: '测试', remark: 'xx区' },
           //其他数据...
        ];
        onMounted(() => {
            initMap();
            mapKindergarten()
            console.log(map, 'map');
        });
        let pointLayer: any;
        /**
        * Date:2024/3/21
        * Author:zx
        * Function:【地图点分布】
        * @param 无
        */
        const mapKindergarten = () => {
            // 初始化地图
            // 创建一个用于存放所有点位的图层
            pointLayer = new mars3d.layer.GraphicLayer({
                name: 'PointLayer',
                hasEdit: false,
                isAutoEditing: false
            });

            // 将图层添加到地图
            map.addLayer(pointLayer);
            // 遍历数组,为每个点位数据创建图形点
            arr.forEach((pointData: any) => {
                // 解析点位的坐标
                const coordinates = JSON.parse(pointData.grid).coordinates;

                // 创建 Mars3D 中的点对象(默认点位样式)
                //                 const pointGraphic = new mars3d.graphic.PointEntity({
                //                 position: coordinates,
                //                 attr: pointData,
                //                 style: {
                //                     color: mars3d.Cesium.Color.RED,
                //                     pixelSize: 10,
                //                     scale: 1,
                //                     image: undefined,
                //                 }
                // });
                // 创建自定义图标点
                // 创建 Mars3D 中的点对象(默认点位样式)
                const pointGraphic = new mars3d.graphic.BillboardEntity({
                    position: coordinates,
                    attr: pointData,
                    style: {
                        pixelSize: 10,
                        scale: 0.5,
                        image: tb,
                    }
                });

                // 添加点位点击事件
                pointGraphic.on(mars3d.EventType.click, function (event: any) {
                    console.log('点击了点位', event);
                });
                // 将点对象添加到图层
                pointLayer.addGraphic(pointGraphic);
            });


        };

</script>

<style scoped lang="scss">
.mars3d-container {
    width: 100%;
    height: 100%;
}
</style>

效果图

4.热力图

(1)安装热力图库

   npm install mars3d-heatmap

 (2)引入库

    import "mars3d-heatmap"

(3)写函数

        注:  创建热力图层,添加图层,再调用函数

                  arr就是前面点位标注函数的arr数据

 /**
        * Date:2024/3/21
        * Author:zx
        * Function:【热力图】
        * @param 无
        */
        let heatLayer: any = null
        const mapKindergartenHeatmap = () => {
            let arrPoints: any = []
            arr.forEach((item: any) => {
                if (item.point || item.grid) {
                    let pointData = item.point ? JSON.parse(item.point).coordinates : JSON.parse(item.grid).coordinates
                    arrPoints.push({ lng: pointData[0], lat: pointData[1], value: 1 })
                }
            })
            if (heatLayer) {
                map.removeLayer(heatLayer)
                heatLayer = null
            }
            
            // 热力图 图层
            heatLayer = new mars3d.layer.HeatLayer({
                name: "Point",
                positions: arrPoints,
                heatStyle: {
                radius: 40,
                blur: 0.85,
                gradient: { 0.4: 'blue', 0.6: 'green',0.9: 'yellow',1: 'red' }
                },
                // 以下为矩形矢量对象的样式参数 
                style: {
                    arc: false, // 是否为曲面
                    height: 10
                },
                // flyTo: true,
            })
            map.addLayer(heatLayer)
        };

效果如下

 

 5.地图面分布

创建面图层-将面图层添加到地图-创建多边形对象-将面对象添加到图层

下面是根据数据生成面的函数, polygonData是后台数据 ,我模拟了个别

        /**
        * Date:2024/3/21
        * Author:zx
        * Function:【地图面分布】
        * @param 无
        */
        let polygonData = ref( [
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
          [108.901467, 34.22501],
          [108.90235, 34.224611],
          [108.902374, 34.223664],
          [108.90208, 34.223183],
          [108.901581, 34.222639],
          [108.901447, 34.222412],
          [108.901445, 34.222413],
          [108.901417, 34.222425],
          [108.901366, 34.222449],
          [108.90134, 34.22246],
          [108.901334, 34.222463],
          [108.901295, 34.22248],
          [108.901291, 34.222482],
          [108.901232, 34.222509],
          [108.901189, 34.222527],
          [108.901173, 34.222534],
          [108.901103, 34.222568],
          [108.901033, 34.222601],
          [108.900963, 34.222635],
          [108.900906, 34.22266],
          [108.900899, 34.222663],
          [108.900827, 34.222695],
          [108.900821, 34.222697],
          [108.900732, 34.222737],
          [108.900636, 34.222778],
          [108.900541, 34.22282],
          [108.900446, 34.222862],
          [108.90035, 34.222904],
          [108.900292, 34.22293],
          [108.900234, 34.222956],
          [108.900171, 34.222983],
          [108.900783, 34.223906],
          [108.901467, 34.22501]
        ]
      ]
    },
    num: 1,
    name: "中天花园"
  },  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.903272,34.19876],
        [108.902163,34.198774],
        [108.902107,34.198582],
        [108.901865,34.197436],
        [108.90172,34.197456],
        [108.900913,34.197557],
        [108.900863,34.197241],[108.900343,34.197292],
        [108.900339,34.199717],[108.90037,34.199792],
        [108.900392,34.199849],[108.903211,34.19984],
        [108.903251,34.199807],[108.903278,34.199785],
        [108.903273,34.199352],[108.903272,34.19876]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  },
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.911196,34.22649],
        [108.910652,34.22675],[108.911124,34.22748],
        [108.911472,34.227295],[108.911621,34.227229],
        [108.911196,34.22649]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  },
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.901062,34.232978],[108.901054,34.233017],
        [108.900955,34.233057],[108.900473,34.233278],
        [108.900505,34.233331],[108.900542,34.233393],
        [108.90058,34.233455],[108.900625,34.233524],
        [108.900669,34.233593],[108.900717,34.233666],
        [108.900765,34.23374],[108.900813,34.233813],
        [108.900856,34.233877],[108.900898,34.23394],
        [108.900941,34.234004],[108.900983,34.234067],
        [108.901015,34.234114],[108.901023,34.234127],
        [108.901068,34.234196],[108.901112,34.234264],
        [108.901156,34.234333],[108.9012,34.234401],
        [108.901245,34.23447],[108.901289,34.234538],
        [108.901333,34.234607],[108.90138,34.23468],[
        108.901427,34.234752],[108.901473,34.234825],
        [108.90152,34.234897],[108.901567,34.23497],
        [108.901583,34.234995],[108.901618,34.235048],
        [108.901653,34.235102],[108.901688,34.235156],
        [108.90169,34.235161],[108.901703,34.235183],
        [108.901987,34.235047],[108.901305,34.233942],
        [108.901418,34.233891],[108.901066,34.233256],
        [108.901635,34.232992],[108.901228,34.23234],
        [108.901179,34.232363],[108.901094,34.232402],
        [108.901009,34.232441],[108.900923,34.232479],
        [108.900838,34.232518],[108.900798,34.232537],
        [108.90079,34.23254],[108.901062,34.232978]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  },
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.903119,34.228991],
        [108.902817,34.228477],
        [108.90172,34.228988],
        [108.901765,34.229057],
        [108.90181,34.229128],
        [108.901856,34.229198],
        [108.901901,34.229269],
        [108.901947,34.229339],
        [108.901993,34.22941],
        [108.902031,34.229469],
        [108.902034,34.229474],
        [108.902621,34.229205],
        [108.903119,34.228991]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  }
  ,
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.903443,34.230496],
        [108.903075,34.229939],
        [108.902621,34.229205],
        [108.902034,34.229474],
        [108.902081,34.229546],
        [108.902131,34.229624],
        [108.90218,34.229701],
        [108.90223,34.229778],
        [108.90228,34.229856],
        [108.90233,34.229933],
        [108.90238,34.23001],
        [108.90243,34.230088],
        [108.90248,34.230165],
        [108.90253,34.230243],
        [108.90258,34.23032],
        [108.90263,34.230397],
        [108.902677,34.23047],
        [108.902724,34.230542],
        [108.902772,34.230614],
        [108.902819,34.230687],
        [108.902865,34.230758],
        [108.903443,34.230496]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  },
  {
    grid: {
      type: "Polygon",
      coordinates: [
        [
        [108.904156,34.230607],
        [108.903706,34.229914],
        [108.903119,34.228991],
        [108.902621,34.229205],
        [108.903075,34.229939],
        [108.903443,34.230496],
        [108.903656,34.230842],
        [108.904156,34.230607]
        ]
      ]
    },
    num: 1,
    name: "xx花园"
  }
])
        const mapKindergartenFace = () => {
            // 创建一个用于存放所有面的图层
            const polygonLayer = new mars3d.layer.GraphicLayer({
                name: 'PolygonLayer',
                hasEdit: false,
                isAutoEditing: false
            });
            // 将图层添加到地图
            map.addLayer(polygonLayer);
            // 遍历数组,为每个面数据创建多边形
            polygonData.value.forEach((polygonCoords: any) => {
                // 解析多边形的坐标
                const coordinates = JSON.parse(polygonCoords.grid).coordinates; // 这里假设polygonCoords是一个JSON格式的坐标数组

                // 创建 Mars3D 中的多边形对象
                const polygonEntity = new mars3d.graphic.PolygonEntity({
                    positions: coordinates, // 设置多边形的位置坐标数组
                    style: {
                        color: "#e8b99d"
                        // fillColor: mars3d.Cesium.Color.RED.withAlpha(1), // 设置面的填充颜色和透明度
                        // outlineColor: mars3d.Cesium.Color.BLACK, // 设置面的边框颜色
                        // outlineWidth: 10 // 设置面的边框宽度
                    }
                });

                // 将多边形对象添加到图层
                polygonLayer.addGraphic(polygonEntity);
            });


        };

效果如下

6. 地图放大展示点位名称

(1)编写一个相机移动视角的函数(三维地图,不再是地图的缩放,而是视角,)

         函数中创建了标签图层,并添加

      sceneData.value.alt为相机的高度,也就是地图放大缩小率

   /**
        * Date:2024/3/21
        * Author:zx
        * Function:【相机移动或视角变化】
        * @param 无
        */
        let labelLayer: any = null; // 添加标签的图层
        let sceneData = ref()
        const map_cameraChangedHandler = () => {
            sceneData.value = map.getCameraView();
            // console.log(sceneData.value, '视角');

            // 检查相机高度是否小于 3000
            if (sceneData.value.alt > 10000) {
                // 删除 labelLayer 图层中的标签

                map.getLayers().forEach((item: any) => {
                    if (item.options.name === "LabelLayer") {
                        map.removeLayer(item);
                    }
                })

            } else {
                // 显示标签
                labelLayer = new mars3d.layer.GraphicLayer({
                    name: 'LabelLayer',
                    hasEdit: false,
                    isAutoEditing: false
                });
                map.addLayer(labelLayer);
                // 遍历标签图层中的标签,并添加到图层中
                arr.forEach((pointData: any) => {
                    const coordinates = JSON.parse(pointData.grid).coordinates;

                    // 创建标签图形
                    const labelGraphic = new mars3d.graphic.LabelEntity({
                        position: coordinates,
                        style: {
                            text: pointData.name, // 幼儿园名称
                            font: '16px sans-serif', // 字体大小和样式
                            fillColor: mars3d.Cesium.Color.YELLOW, // 字体颜色
                            // outlineColor: mars3d.Cesium.Color.BLACK, // 字体描边颜色
                            outlineWidth: 1, // 字体描边宽度
                            horizontalOrigin: mars3d.Cesium.HorizontalOrigin.CENTER, // 文本水平对齐方式
                            verticalOrigin: mars3d.Cesium.VerticalOrigin.BOTTOM, // 文本垂直对齐方式
                            pixelOffset: new mars3d.Cesium.Cartesian2(0, -40), // 文本偏移量,使其显示在点的上方
                            disableDepthTestDistance: Number.POSITIVE_INFINITY // 防止标签被遮挡
                        }
                    });

                    // 将标签图形添加到标签图层中
                    labelLayer.addGraphic(labelGraphic);
                });
            }
        };

(2)在点位标注函数那 绑定相机视角事件

 

效果如下,可自由设置相机视角高度,实现放大展示点位信息,缩小隐藏点位信息

通过本文,开发者将获得对Mars3D简单的一些操作,更高级的功能小编还在学习中,期待一起进步。

【mars3d】Vue3项目集成mard3d实现gis空间地理系统 vue3项目集成mars3d框架 阅读详情

相关推荐

Mars3D小白专属:开发者快速上手实战指南

本文将为开发者打开通往Mars3D的数字星际之门。通过深入了解Mars3D的API、SDK和开发环境,开发者将发现如何利用自己的技术创造力,参与到这场数字地球的开创性探索中。从基础概念到高级应用,本文将带领开发者深入体验Mars3D的无限可能性,为数字星球的未来注入新的活力。

前端全栈大佬 7387

Mars3D使用教程

​//安装mars3d插件(按需安装)​//安装copy-webpack-plugin插件在第3步中使用,根据webpack版本安装,不匹配的版本可能出错,版本需要5.0//引入cesium基础库​//导入mars3d主库​//导入mars3d插件(按需使用,需要先npm install).

qq_42250281的博客 5672

Cesium学习教程+笔记(Mars3D)

Gesium学习(Mars3D) 一 快速开始 中文教程-小白必备 中文api文档–学会查阅文档 准备工作-引入文件 vue-cli目录 public/index.html <!--引入cesium基础lib--> <link href="http://mars3d.cn/lib/Cesium/Widgets/widgets.css" rel="stylesheet" type="text/css" /> <script src="http://mars3d.c

a1578460233的博客 7166

【Mars3d 基础 - 图层】种类和使用

使用mars3d添加图层和矢量数据

m0_53584457的博客 5218

Mars3D快速上手

Mars3D 的获取下载并集成到自己项目中

木遥的专栏 5947

Mars3D功能示例Vue版下载运行教程

对mars3d功能示例的下载及本地运行。首先建议您学习浏览一遍我们功能示例的源码(源码中会有大量注释),阅读源码时可以结合查阅API文档来理解类及方法的作用和参数说明等。

maqiong1991的博客 1392

好用的三维地图开发工具Mars3D

Mars3D是一款基于WebGL技术实现的三维地球客户端开发平台,由火星科技自主研发。该平台基于Cesium进行优化提升,并采用B/S架构设计,旨在为用户提供高效、灵活的三维可视化解决方案。虽然它不是开源的,但是免费版的基本足够大家做项目集成使用了,它的电子沙盘是需要额外收费的,大家可以随意使用其基础三维功能。Mars3D三维可视化平台: Mars3D三维可视化平台,是一款支持多行业应用的网页端二三维 GIS 可视化地图平台。

xuweilin的博客 3776

mars3d基于vue3.0的widget使用

mars3d在vue3.0生态上开发了两个gis相关开源项目 mars3d-vue-example 和 mars3d-vue-project,在这两个项目中widget都是非常重要的一个模块。通过widget可以在复杂的场景下非常清晰的管理功能模块之间的互斥关系,管理内存,完成不同的功能模块之间的解耦,并且可以实现功能模块之间的交互。下面就来介绍一下,widget模块的使用。 前置依赖:使用widget模块,则必须依赖vuex,通过vuex实现widget管理、交互等。 widget相关的代码一

maqiong1991的博客 2876

Vue3 中使用 Mars3D 进行三维地图开发

建议多查阅 [Mars3D 官方文档](http://mars3d.cn/)、[API 文档](http://mars3d.cn/api/) 和 [示例中心](http://mars3d.cn/example.html),里面包含了大量详细的说明和可运行的代码示例,是学习和解决疑难问题的最佳资源。3. **图层管理**:及时移除不再需要的图层 (`map.removeLayer(layer)`) 和矢量数据 (`graphicLayer.removeGraphic(graphic)`)。

weixin_44648979的博客 1553

mars3d (基于 Cesium 的轻量化三维地图库)

Mars3D是基于Cesium的轻量化三维可视化框架,通过封装和优化解决了原生Cesium学习曲线陡峭、API复杂等问题。它提供200+扩展功能,支持智慧城市、军事仿真等场景,并优化了瓦片加载等性能。在Vue3+vite项目中,通过安装mars3d和mars3d-cesium库,配置vite-plugin-mars3d插件,即可快速构建三维场景。Mars3D简化了开发流程,同时保持了Cesium的强大功能。

郭宝的博客 1109

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

weald2000的专栏 2080

Vue3项目引入Mars3D(vite 技术栈)

项目背景:笔者采用Vue3引入Mars3D后,再调用GeoServer离线发布的图层。

m0_62498143的博客 3079

TLSv1.0与TLSv1.1安全漏洞深度解析与实战修复指南

本文深度解析TLSv1.0与TLSv1.1的安全漏洞,包括POODLE和BEAST攻击原理,并提供实战修复指南。通过禁用老旧协议、配置安全加密套件和网络层防护措施,有效提升系统安全性。文章还针对无法立即升级的场景,给出了补偿性防御方案,帮助管理员全面应对传输层安全风险。

weixin_29322855的博客 206

【mars3d】基于vue3的marsgis通用UI库 mars-ui 的使用

一名脑残程序员的mars-ui心酸使用记录。 通过mars3d的官网我们可以看到,有配套的UI库使用,那么我们如何使用到自己的项目中呢,跟着文章一步一步来吧! 1、引入UI库 ① 安装ant-design-vue cnpm install ant-design-vue --save ② 下载基于vue开发的mars3d的源码,直通车: git clone https://gitee.com/marsgis/mars3d-vue-project.git,如下图所示,将src/components/mar

球球博客 3707

DC-DC拓扑:从电感位置一眼识别Buck、Boost与Buck-Boost

本文详细解析了DC-DC拓扑中电感位置对识别Buck、Boost与Buck-Boost电路的关键作用。通过对比不同拓扑的电感连接特征,提供快速识别方法和设计要点,帮助工程师避免常见错误并优化电路性能。特别强调电感位置对输出质量和效率的影响,适合电源设计人员参考。

java2000.net 372

STM32F103C8T6的PC13-15引脚配置避坑指南:为什么你的IO口不工作?

本文详细解析了STM32F103C8T6的PC13-15引脚作为普通IO口不工作的原因及解决方案。这三个引脚默认关联侵入检测和低速外部时钟等特殊功能,需先禁用TAMPER和LSE,并开启AFIO时钟,才能正确配置为普通GPIO。文章提供了标准外设库和HAL库的配置步骤、常见问题排查方法及硬件设计注意事项。

weixin_29169899的博客 523

Mars3D项目模板:基础项目 Vue版 介绍

​ Mars3D 基础项目 是基于Mars3D 平台做的一个应用系统,提供的一个基础项目模版,包含常用基础地图功能,可在该基础项目上快速开发搭建新项目。方便快速搭建三维地图产品,敏捷开发,可复用,支持各种配置,适合各种场景使用。 ​

木遥的专栏 3952

LabVIEW内存优化实战:用DVR和队列高效处理大型数组,告别数据副本

本文深入探讨LabVIEW内存优化技术,重点介绍数据值引用(DVR)和单元素队列(SEQs)在高效处理大型数组中的应用。通过对比传统方法与现代引用技术的性能差异,提供减少内存副本、提升程序效率的实战方案,帮助开发者在测试测量、图像处理等数据密集型场景中实现显著性能提升。

weixin_30835649的博客 1061

mars3D入门教程(vue)

本文介绍了在Vue3+JS项目中集成Mars3D地图库的两种方法。第一种是通过npm安装依赖包后,在Vite配置中添加插件,然后在Vue组件中初始化3D地球,包括设置视角、光照、地图投影等参数,并加载天地图作为底图。第二种方法是使用JSON配置文件创建地图,通过fetchJson加载配置文件实现初始化。两种方式都提供了完整代码示例,开发者可根据需求选择直接配置或JSON文件方式,并提醒需要替换自己的API Key。

keys___的博客 825

量化实战:用三种波动率模型给你的期货策略做个“体检”(附Python代码与螺纹钢案例)

本文深入探讨了三种专业波动率模型(Parkinson、Garman-Klass和Rogers-Satchell)在期货量化策略中的应用,并以螺纹钢期货为例,展示了如何通过Python实现这些模型进行多维度波动率分析。文章详细比较了不同模型的特点和适用场景,提供了动态仓位管理、止损策略优化等实战应用方案,帮助交易者更精准地评估市场风险,优化策略表现。

weixin_26824299的博客 460

使用LabVIEW创建和分析柱状图:从基础绘制到高级数据分析的完整指南

LabVIEW,全称为Laboratory Virtual Instrument Engineering Workbench,是由美国国家仪器公司(National Instruments, NI)开发的一款图形化编程语言。自1986年首次推出以来,LabVIEW凭借其强大的数据采集、分析和控制能力,在工程、科研、教育等领域得到了广泛应用。与传统的文本编程语言不同,LabVIEW采用了图形化编程方式,用户通过连接不同的函数节点来实现复杂的逻辑和算法。

qq_38334677的博客 775

Mars3d从菜鸟到大神的超级捷径

mars3d的快速熟悉捷径

m0_69803146的博客 4734

Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

LocalPort”是PLC的端口,最终的设置如下图所示:(相关的设置都可以查看帮助文档)P#DB1.DBX0.0 BYTE28是以指针形式表示的DB1的DBX0.0开始(在使用的西门子Modbus tcp的程序块中设置的“MB_HOLD_REG”输出寄存器),其有28个字节(28个字节对应14个寄存器),4001是第一个寄存器,往后数14个即可。在上面的基础上,增加一个“DB1”的“组对象”,同时将“MW0”的组对象禁止(双击组对象,“Active”取消勾选),启动之后发现无法连接。

分享学习成长历程,Winter is coming! 1万+

Vue3使用mars3d

Vue3使用mars3d

weixin_46720238的博客 744

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: Vue3引入高德地图
下一篇: OpenLayers实操Vue3(点线面文字标注热力图聚合点地图打印等等...)
热爱跑步的小前端
博客等级 码龄4年 62粉丝 7原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值