VueBaiDuMap百度地图组件常用案例

news2025/1/18 17:10:43

VueBaiDuMap获取可视区边界点坐标_毛三仙的博客-CSDN博客【代码】VueBaiDuMap获取可视区边界点坐标。百度地图,左上角左下角右上角右下角坐标https://blog.csdn.net/m0_74149462/article/details/130420983?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22130420983%22%2C%22source%22%3A%22m0_74149462%22%7D

VueBaiDuMap实现绘制自定义区域(即多边形)_毛三仙的博客-CSDN博客VueBaiDuMap实现绘制自定义区域,多边形(百度地图)https://blog.csdn.net/m0_74149462/article/details/130420530?spm=1001.2014.3001.5502

利用VueBaiDuMap实现打点 + 弹窗(el-dialog)_毛三仙的博客-CSDN博客【代码】利用VueBaiDuMap实现打点 + 弹窗(el-dialog)https://blog.csdn.net/m0_74149462/article/details/130402951?spm=1001.2014.3001.5502

vueBaiDuMap实现多边形回显https://blog.csdn.net/m0_74149462/article/details/130420789

完整示例代码

vueBaiDuMap/vueBaiDuMap.vue

<!--
 * @Description: vueBaiDuMap 使用 页面
 * @Author: mhf
 * @Date: 2023-04-27 10:44:08
-->
<template>
  <div class="map">
    <baidu-map
      class="map"
      :center="mapCenter"
      :zoom="mapZoom"
      :scroll-wheel-zoom="true"
      @ready="onMapReady"
    >
      <!-- 点聚合 -->
      <bml-marker-clusterer :averageCenter="true">
        <!-- 点 -->
        <bm-marker
          v-for="(item, index) in markerPoints"
          :key="index"
          :position="item"
          :icon="markerIcon"
          @click="markerClick(item)"
        >
        </bm-marker>
        <!-- 点 -->
      </bml-marker-clusterer>
      <!-- 点聚合 -->

      <!-- 多边形 -->
      <bm-polygon
        v-for="(item, index) in polygonPath"
        :key="item.toString()"
        :path="item"
        stroke-color="#1492FF"
        fill-color="#1492FF"
        :fill-opacity="0.2"
        :stroke-opacity="1"
        :stroke-weight="3"
      />
      <!-- 多边形 -->

      <!-- 自定义控件 -->
      <bm-control>
        <el-button
          style="margin: 20px 0 0 20px"
          type="primary"
          size="small"
          @click="showDrawPolylineDialog"
          >绘制折线</el-button
        >
        <el-button
          style="margin: 20px 0 0 20px"
          type="primary"
          size="small"
          @click="showDrawAreaDialog"
          >绘制多边形弹窗</el-button
        >
        <el-button
          style="margin: 20px 0 0 20px"
          type="primary"
          size="small"
          @click="drawArea"
          >{{ isDraw ? "删除多边形" : "绘制多边形" }}</el-button
        >
        <el-button
          style="margin: 20px 0 0 20px"
          type="primary"
          size="small"
          @click="getVisibleAreaPointsBtn"
          >可视区坐标</el-button
        >
      </bm-control>
    </baidu-map>
    <!-- 自定义控件 -->

    <!-- 弹窗 -->
    <el-dialog
      title="点位"
      :visible.sync="dialogVisible"
      width="39%"
      :before-close="hideDialog"
    >
      <div>
        {{ dialogData }}
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="hideDialog">取 消</el-button>
        <el-button type="primary" @click="hideDialog">确 定</el-button>
      </span>
    </el-dialog>
    <!-- 弹窗 -->

    <drawPolylineDialog ref="drawPolylineDialog" />
    <drawAreaDialog ref="drawAreaDialog" />
  </div>
</template>

<script>
import drawPolylineDialog from "@/views/vueBaiduMap/drawPolylineDialog";
import drawAreaDialog from "@/views/vueBaiduMap/drawAreaDialog";
import { BmlMarkerClusterer } from "vue-baidu-map";

export default {
  name: "vueBaiDuMap",
  components: { drawPolylineDialog, drawAreaDialog, BmlMarkerClusterer },
  props: {},
  data() {
    return {
      mapCenter: { lng: 119.93344129237624, lat: 28.464762954747187 },
      mapZoom: 13,
      markerPoints: [
        // {
        //     id: 1,
        //     name: "天安门",
        //     address: "北京市东城区东长安街",
        //     lng: "116.397515",
        //     lat: "39.908556",
        // },
        // {
        //     id: 2,
        //     name: "故宫博物馆",
        //     address: "北京市东城区景山前街4号",
        //     lng: "116.403369",
        //     lat: "39.924169",
        // },
      ], // 存放点位数据, 数据格式如上(id,lng,lat必须)
      points: require("./ponits.json").data, // 模拟接口数据
      markerIcon: {
        url: require("../../../public/img/forklift.png"),
        size: {
          width: 36,
          height: 36,
        },
      }, // 点位图标
      dialogVisible: false, // 是否展示弹窗
      dialogData: null, // 弹窗中展示的数据

      polygonPath: [], // 存放多边形数据
      isDraw: false, // 绘制多边形/删除多边形
      map: null, // 地图实例
      visibleAreaPoints: {}, // 可视区坐标
    };
  },
  methods: {
    /**
     * @Event 方法
     * @description: 点位点击事件
     * */
    markerClick(data) {
      // console.log(data)
      this.dialogVisible = true;
      this.dialogData = data;
    },

    /**
     * @Interface 接口
     * @description: 模拟数据请求 获取点位数据
     * */
    getPoints() {
      // console.log(this.points)
      this.points.forEach((item, index) => {
        this.markerPoints.push({
          id: item.clusterId,
          lng: item.x,
          lat: item.y,
        });
      });
    },

    /**
     * @Event 方法
     * @description: 关闭弹窗
     * */
    hideDialog() {
      this.dialogVisible = false;
    },

    /**
     * @Event 方法
     * @description: 打开绘制折线弹窗
     * */
    showDrawPolylineDialog() {
      this.$refs.drawPolylineDialog.showDialog();
    },

    /**
     * @Event 方法
     * @description: 打开绘制区域弹窗
     * */
    showDrawAreaDialog() {
      this.$refs.drawAreaDialog.showDialog();
    },

    /**
     * @Event 方法
     * @description: 绘制区域
     * */
    drawArea() {
      this.isDraw = !this.isDraw;
      this.polygonPath = this.isDraw ? require("./areaPoints.json").data : [];
    },

    /**
     * @Event 方法
     * @description: 获取地图实例,并添加事件监听器
     * */
    onMapReady(map) {
      this.map = map.map;
      // console.log(map);
      this.map.addEventListener("dragend", this.getVisibleAreaPoints); // 停止拖拽地图时触发
      this.map.addEventListener("zoomend", this.getVisibleAreaPoints); // 地图更改缩放级别结束时触发触发此事件
    },

    /**
     * @Event 方法
     * @description: 获取可视区坐标
     * */
    getVisibleAreaPoints() {
      // 当地图拖动结束后,获取地图的可视区坐标范围
      const bounds = this.map.getBounds();
      // 获取地图可视区域四个角的经纬度坐标
      const northEast = bounds.getNorthEast();
      const southEast = new BMap.Point(
        northEast.lng,
        bounds.getSouthWest().lat
      );
      const northWest = new BMap.Point(
        bounds.getSouthWest().lng,
        northEast.lat
      );
      const southWest = bounds.getSouthWest();
      console.log("东北角的坐标:", northEast);
      console.log("东南角的坐标:", southEast);
      console.log("西北角的坐标:", northWest);
      console.log("西南角的坐标:", southWest);
      this.visibleAreaPoints = { northEast, southEast, northWest, southWest };
    },

    /**
     * @Event 方法
     * @description: 获取可视区坐标 --- 按钮点击
     * */
    getVisibleAreaPointsBtn() {
      this.getVisibleAreaPoints();
      this.$message.success(JSON.stringify(this.visibleAreaPoints));
    },
  },
  created() {
    this.getPoints();
  },
  mounted() {},
};
</script>

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

vueBaiDuMap/areaPoints.json

{
  "code": 1,
  "message": "查询成功",
  "data": [
    [
      {
        "lng": 119.917344,
        "lat": 28.510226
      },
      {
        "lng": 119.868188,
        "lat": 28.43961
      },
      {
        "lng": 119.975123,
        "lat": 28.424363
      },
      {
        "lng": 119.99352,
        "lat": 28.497783
      },
      {
        "lng": 119.934591,
        "lat": 28.467557
      },
      {
        "lng": 119.954426,
        "lat": 28.51632
      }
    ],
    [
      {
        "lng": 120.024565,
        "lat": 28.513527
      },
      {
        "lng": 119.971961,
        "lat": 28.471114
      },
      {
        "lng": 120.014504,
        "lat": 28.413181
      },
      {
        "lng": 120.009618,
        "lat": 28.513019
      },
      {
        "lng": 120.055898,
        "lat": 28.454347
      }
    ]
  ]
}

vueBaiDuMap/drawAreaDialog.vue

<!--
 * @Description: vueBaiDuMap绘制自定义区域 弹窗 页面
 * @Author: mhf
 * @Date: 2023-04-27 11:37:11
-->

<template>
  <el-dialog
    title="绘制区域"
    width="50%"
    :visible.sync="dialogVisible"
    :before-close="hideDialog"
    :close-on-click-modal="false"
  >
    <div class="dialog-body">
      <baidu-map
        class="map"
        :center="center"
        :zoom="zoom"
        :map-click="false"
        :scroll-wheel-zoom="true"
        @mousemove="syncPolygon"
        @ready="handler"
        @click="paintPolygon"
        @rightclick="newPolygon"
      >
        <bm-polygon
          :path="path"
          v-for="path of polygonPath.paths"
          :key="path.toString()"
          stroke-color="#1492FF"
          fill-color="#1492FF"
          :fill-opacity="0.2"
          :stroke-opacity="1"
          :stroke-weight="3"
          @click="alertpath"
        />
        <bm-control>
          <el-button type="danger" size="small" @click="toggle('polygonPath')">
            {{ polygonPath.editing ? "停止绘制" : "开始绘制" }}
          </el-button>
        </bm-control>
      </baidu-map>
    </div>
    <span slot="footer" class="dialog-footer">
      <el-button @click="hideDialog">取 消</el-button>
      <el-button type="primary" @click="hideDialog">确 定</el-button>
    </span>
  </el-dialog>
</template>

<script>
export default {
  name: "drawAreaDialog",
  components: {},
  props: {},
  data() {
    return {
      dialogVisible: false,
      haha: "百度地图",
      center: { lng: 119.93344129237624, lat: 28.464762954747187 },
      zoom: 13,
      polygonPath: {
        editing: false,
        paths: [], // 绘制完成后的经纬度,其实是在画的时候动态push的,因为在点击的时候触发了 paintPolygon 函数
      },
    };
  },
  methods: {
    handler({ BMap, map }) {
      console.log(BMap, map);
    },
    getClickInfo(e) {
      console.log(e.point.lng);
      console.log(e.point.lat);
    },
    // 开启多边形绘制
    toggle(name) {
      this[name].editing = !this[name].editing;
      // 在这里做一步判断,如果有路径且开启绘制就把原来的路径清空
      if (this.polygonPath.paths && this.polygonPath.editing) {
        this.polygonPath.paths = [];
      }
    },
    // 鼠标移动时
    syncPolygon(e) {
      if (!this.polygonPath.editing) {
        return;
      }
      const { paths } = this.polygonPath;
      if (!paths.length) {
        return;
      }
      const path = paths[paths.length - 1];
      if (!path.length) {
        return;
      }
      if (path.length === 1) {
        path.push(e.point);
      }
      this.$set(path, path.length - 1, e.point);
    },
    // 鼠标左键点击时往路径里push一个点
    newPolygon(e) {
      if (!this.polygonPath.editing) {
        return;
      }
      // 当开始绘制后把按钮调回开始绘制状态,防止绘制多个图形
      this["polygonPath"].editing = !this["polygonPath"].editing;
      const { paths } = this.polygonPath;
      if (!paths.length) {
        paths.push([]);
      }
      const path = paths[paths.length - 1];
      path.pop();
      if (path.length) {
        paths.push([]);
      }
    },
    // 鼠标右键多边形绘制完成
    paintPolygon(e) {
      if (!this.polygonPath.editing) {
        return;
      }
      const { paths } = this.polygonPath;
      !paths.length && paths.push([]);
      paths[paths.length - 1].push(e.point);
    },
    alertpath(e) {
      console.log(e.currentTarget.so);
      console.log(this.polygonPath.paths[0]);
    },

    /**
     * @Event 方法
     * @description: 关闭弹窗
     * */
    hideDialog() {
      this.dialogVisible = false;
    },

    /**
     * @Event 方法
     * @description: 打开弹窗
     * */
    showDialog() {
      this.dialogVisible = true;
    },
  },
  created() {},
  mounted() {},
};
</script>

<style lang="scss" scoped>
.dialog-body {
  width: 100% !important;
  height: 500px !important;

  .map {
    width: 100% !important;
    height: 100% !important;
  }
}
</style>

vueBaiDuMap/drawPolylineDialog.vue

<!--
 * @Description: vueBaiDuMap绘制自定义折线 弹窗 页面
 * @Author: mhf
 * @Date: 2023-04-27 11:37:11
-->

<template>
  <el-dialog
    title="绘制折线"
    width="43%"
    :visible.sync="dialogVisible"
    :before-close="hideDialog"
    :close-on-click-modal="false"
  >
    <div class="dialog-body">
      <baidu-map
        class="map"
        :center="mapCenter"
        :zoom="mapZoom"
        :scroll-wheel-zoom="true"
        @mousemove="syncPolyline"
        @click="paintPolyline"
        @rightclick="newPolyline"
      >
        <bm-control>
          <el-button size="small" type="danger" @click="toggle('polyline')">{{
            polyline.editing ? "停止绘制" : "开始绘制"
          }}</el-button>
        </bm-control>
        <bm-polyline :path="path" v-for="path of polyline.paths"></bm-polyline>
      </baidu-map>
    </div>
    <span slot="footer" class="dialog-footer">
      <el-button @click="hideDialog">取 消</el-button>
      <el-button type="primary" @click="hideDialog">确 定</el-button>
    </span>
  </el-dialog>
</template>

<script>
export default {
  name: "drawAreaDialog",
  components: {},
  props: {},
  data() {
    return {
      dialogVisible: false,
      mapCenter: { lng: 119.93344129237624, lat: 28.464762954747187 },
      mapZoom: 13,
      polyline: {
        editing: false,
        paths: [],
      },
    };
  },
  methods: {
    /**
     * @Event 方法
     * @description: 关闭弹窗
     * */
    hideDialog() {
      this.dialogVisible = false;
    },

    /**
     * @Event 方法
     * @description: 打开弹窗
     * */
    showDialog() {
      this.dialogVisible = true;
    },

    toggle(name) {
      this[name].editing = !this[name].editing;
    },
    syncPolyline(e) {
      if (!this.polyline.editing) {
        return;
      }
      const { paths } = this.polyline;
      if (!paths.length) {
        return;
      }
      const path = paths[paths.length - 1];
      if (!path.length) {
        return;
      }
      if (path.length === 1) {
        path.push(e.point);
      }
      this.$set(path, path.length - 1, e.point);
    },
    newPolyline(e) {
      if (!this.polyline.editing) {
        return;
      }
      const { paths } = this.polyline;
      if (!paths.length) {
        paths.push([]);
      }
      const path = paths[paths.length - 1];
      path.pop();
      if (path.length) {
        paths.push([]);
      }
    },
    paintPolyline(e) {
      if (!this.polyline.editing) {
        return;
      }
      const { paths } = this.polyline;
      !paths.length && paths.push([]);
      paths[paths.length - 1].push(e.point);
    },
  },
  created() {},
  mounted() {},
};
</script>

<style lang="scss" scoped>
.dialog-body {
  width: 100% !important;
  height: 500px !important;

  .map {
    width: 100% !important;
    height: 100% !important;
  }
}
</style>

vueBaiDuMap/points.json

{
  "code": 1,
  "message": "查询成功",
  "data": [
    {
      "clusterId": 13,
      "pointCount": 0,
      "x": 119.94566899999997,
      "y": 28.47721500000003,
      "data": {
        "id": 13,
        "longitude": 119.945669,
        "latitude": 28.477215,
        "groupType": 7
      },
      "cluster": false
    },
    {
      "clusterId": 18,
      "pointCount": 0,
      "x": 119.93474500000004,
      "y": 28.441743000000002,
      "data": {
        "id": 18,
        "longitude": 119.934745,
        "latitude": 28.441743,
        "groupType": 7
      },
      "cluster": false
    },
    {
      "clusterId": 19,
      "pointCount": 0,
      "x": 119.97269,
      "y": 28.498137,
      "data": {
        "id": 19,
        "longitude": 119.97269,
        "latitude": 28.498137,
        "groupType": 7
      },
      "cluster": false
    },
    {
      "clusterId": 23,
      "pointCount": 0,
      "x": 119.96535900000003,
      "y": 28.463244000000017,
      "data": {
        "id": 23,
        "longitude": 119.965359,
        "latitude": 28.463244,
        "groupType": 8
      },
      "cluster": false
    },
    {
      "clusterId": 26,
      "pointCount": 2,
      "x": 119.93983495465487,
      "y": 28.468624388296718,
      "data": null,
      "cluster": true
    },
    {
      "clusterId": 27,
      "pointCount": 0,
      "x": 119.9667680079382,
      "y": 28.47058781908956,
      "data": {
        "id": 27,
        "longitude": 119.96676800793821,
        "latitude": 28.47058781908956,
        "groupType": 6
      },
      "cluster": false
    },
    {
      "clusterId": 28,
      "pointCount": 0,
      "x": 119.94118426541667,
      "y": 28.461185241132853,
      "data": {
        "id": 28,
        "longitude": 119.9411842654167,
        "latitude": 28.461185241132828,
        "groupType": 6
      },
      "cluster": false
    },
    {
      "clusterId": 29,
      "pointCount": 2,
      "x": 119.92901101598363,
      "y": 28.46245138426704,
      "data": null,
      "cluster": true
    },
    {
      "clusterId": 30,
      "pointCount": 0,
      "x": 119.93054725405256,
      "y": 28.492017666758713,
      "data": {
        "id": 30,
        "longitude": 119.93054725405253,
        "latitude": 28.492017666758706,
        "groupType": 6
      },
      "cluster": false
    },
    {
      "clusterId": 56,
      "pointCount": 3,
      "x": 119.93524489214632,
      "y": 28.465284122333628,
      "data": null,
      "cluster": true
    },
    {
      "clusterId": 57,
      "pointCount": 0,
      "x": 119.95441515962155,
      "y": 28.47167472473771,
      "data": {
        "id": 57,
        "longitude": 119.95441515962155,
        "latitude": 28.471674724737692,
        "groupType": 8
      },
      "cluster": false
    },
    {
      "clusterId": 69,
      "pointCount": 0,
      "x": 119.92249862655683,
      "y": 28.487483056189433,
      "data": {
        "id": 69,
        "longitude": 119.92249862655683,
        "latitude": 28.48748305618944,
        "groupType": 6
      },
      "cluster": false
    },
    {
      "clusterId": 84,
      "pointCount": 0,
      "x": 119.9092751639679,
      "y": 28.494904431177986,
      "data": {
        "id": 84,
        "longitude": 119.9092751639679,
        "latitude": 28.494904431178,
        "groupType": 4
      },
      "cluster": false
    },
    {
      "clusterId": 90,
      "pointCount": 0,
      "x": 119.90366782792837,
      "y": 28.47566567969669,
      "data": {
        "id": 90,
        "longitude": 119.90366782792837,
        "latitude": 28.47566567969669,
        "groupType": 4
      },
      "cluster": false
    },
    {
      "clusterId": 91,
      "pointCount": 0,
      "x": 119.98417541060682,
      "y": 28.5109908606465,
      "data": {
        "id": 91,
        "longitude": 119.98417541060682,
        "latitude": 28.510990860646483,
        "groupType": 4
      },
      "cluster": false
    },
    {
      "clusterId": 93,
      "pointCount": 0,
      "x": 119.90639897879473,
      "y": 28.46788587181382,
      "data": {
        "id": 93,
        "longitude": 119.90639897879471,
        "latitude": 28.467885871813824,
        "groupType": 4
      },
      "cluster": false
    },
    {
      "clusterId": 96,
      "pointCount": 0,
      "x": 119.91905001626886,
      "y": 28.478514031625764,
      "data": {
        "id": 96,
        "longitude": 119.91905001626886,
        "latitude": 28.478514031625757,
        "groupType": 11
      },
      "cluster": false
    },
    {
      "clusterId": 98,
      "pointCount": 0,
      "x": 119.90410846472986,
      "y": 28.489474506510092,
      "data": {
        "id": 98,
        "longitude": 119.90410846472986,
        "latitude": 28.489474506510092,
        "groupType": 4
      },
      "cluster": false
    }
  ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《springboot实战》 第十二章 SpringBoot整合swagger-bootstrap-ui

前言 SpringBoot整合swagger&#xff0c;使用swagger-bootstrap-ui美化页面。 1、环境配置 1.1、导入依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version…

不得不说的结构型模式-代理模式

目录 代理模式&#xff1a; 下面是一个简单的C代码案例 下面是面试中可能遇到的问题&#xff1a; 代理模式&#xff1a; 代理模式是一种结构型设计模式&#xff0c;它通过引入一个代理对象来控制对另一个对象的访问。代理对象充当原始对象的中介&#xff0c;通过拦截对原始…

倾斜摄影超大场景的三维模型的顶层合并的点云抽稀处理技术分析

倾斜摄影超大场景的三维模型的顶层合并的点云抽稀处理技术分析 倾斜摄影超大场景的三维模型的顶层合并需要进行点云抽稀处理&#xff0c;以减小数据量和提高数据处理和展示性能。以下是几种常用的点云抽稀处理技术&#xff1a; 1、体素栅格化&#xff1a;将点云数据转换为3D体…

【TCP 协议】报文格式,数据可靠传输的机制(一)

哈喽&#xff0c;大家好~我是你们的老朋友&#xff1a;保护小周ღ 本期为大家带来的是网络编程的 TCP 传输控制协议的概念 &#xff0c;首先会讲解 TCP 协议的报文格式&#xff0c;在学习报文格式之后&#xff0c;会学习两种 TCP 保证数据可靠传输的机制&#xff0c;确认应答…

getType() 和 getGenericType()的区别

处理泛型时会经常用到这两个方法&#xff0c;但是二者的区别是什么&#xff1f; 先看看官方的解释&#xff1a; getType 》&#xff1a;Returns a Class object that identifies the declared type for the field represented by this Field object. 返回字段对象声明类型的…

nodejs+python+php+springboot+vue 婚庆公司服务网站管理系统

管理员模块 &#xff08;1&#xff09;信息管理模块&#xff1a;对商家和个人的查看&#xff0c;修改。 &#xff08;2&#xff09;留言管理模块&#xff1a;对留言进行管理&#xff0c;确定是否能进行发布&#xff0c;对留言进行回复。 &#xff08;3&#xff09;权限管理&…

Git常用命令2

git commit --amend 有时候我们提交完了才发现漏掉了几个文件没有添加&#xff0c;或者提交信息写错了。 此时&#xff0c;可以运行带有 --amend 选项的提交命令来重新提交,这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改&#xff08;例如&#xff0c;…

【C++入门】一篇搞懂auto关键字

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】 目录 作用不那么大的场景auto真正的价值注意点auto不能推导的场景范围for范围for的使用条件 作用不那么大的场景 在C中推出了…

工业元宇宙对于制造业的影响有哪些?

伴随元宇宙的快速发展&#xff0c;它在诸多现实场景中都实现了广泛应用&#xff0c;特别是在全球科技与产业竞争核心的智能制造领域。元宇宙与智能制造融合的本质是重构企业研发、制造、销售、终端四大场景&#xff0c;相当于把企业打包进虚拟世界&#xff0c;在虚拟世界中建设…

(五)ArcCatalog应用基础——ArcCatalog基本操作

&#xff08;二&#xff09;ArcCatalog应用基础——ArcCatalog基本操作 当ArcCatalog 与文件夹、数据库或者 GIS 服务器建立链接之后&#xff0c;就可以通过 ArcCatalog 来浏览其中的内容。ArcCatalog 具有浏览地图和数据、创建元数据、搜索地图数据、管理数据源等功能&#x…

SpringBoot RabbitMQ 死信队列

1. 死信定义 无法被消费的消息&#xff0c;称为死信。 如果死信一直留在队列中&#xff0c;会导致一直被消费&#xff0c;却从不消费成功&#xff0c;专门有一个存放死信的队列&#xff0c;称为死信队列(DDX, dead-letter-exchange)。 死信队列 DLX&#xff0c;Dead Letter Exc…

火山引擎 BVE 视频图片硬件编码器演进之路

动手点关注 干货不迷路 前言 近日&#xff0c;第 17 届世界编码器大赛 MSU 2022 公布硬件编码器比赛结果&#xff0c;在 60 fps&#xff08;帧率&#xff09;的超快视频编码赛道上&#xff0c;火山引擎多媒体实验室自主研发的 BVE 1.1 编码器表现突出&#xff0c;荣获最佳 FPGA…

计算机网络学习06(HTTP1.0 vs HTTP1.1)

1、响应状态码 HTTP/1.0仅定义了16种状态码。HTTP/1.1中新加入了大量的状态码&#xff0c;光是错误响应状态码就新增了24种。比如说&#xff0c;100 (Continue)——在请求大资源前的预热请求&#xff0c;206 (Partial Content)——范围请求的标识码&#xff0c;409 (Conflict)…

【C++】priority_queue使用和模拟实现——仿函数

文章目录 1. priority_queue的使用1.priority_queue的介绍2.priority_queue的结构3. 主要接口4. 使用示例 2. 仿函数1. 仿函数的概念2.尝试实现仿函数 3.priority_queue的模拟实现1.priority_queue的结构2. 接口实现1.向下调整算法2. 向上调整算法3.构造函数4.修改数据5.获取数…

机器学习 -Statsmodels

机器学习记录 Statsmodels 用于探索数据, 估计模型, 并运行统计检验. conda install -y statsmodels线性回归 import numpy as np import pandas as pd import matplotlib.pyplot as plt import statsmodels.api as sm import statsmodels.datasets.utils as du import sea…

数据结构【二】:霍夫曼编码

霍夫曼编码&#xff08;Huffman Coding&#xff09;是可变长编码&#xff08;VLC&#xff09;的一种。本质上使用变长编码表对源符号进行编码&#xff0c;通过评估源符号出现概率的方法进行分类&#xff0c;将出现几率较高的源字符使用较短的编码&#xff0c;出现几率较低的源字…

Hive优化补充

目录 一、表设计优化 1.通过设计分区表&#xff0c;增加动态分区&#xff0c;查询时避免全表扫描 2.设计分桶表&#xff1a;适用于大表join大表的情况 最后&#xff0c;两张大表进行join转为两张分桶表进行join&#xff1a; 二、文件存储 1.文件格式-概述 2.文件格式——…

学系统集成项目管理工程师(中项)系列13b_人力资源管理(下)

1. 项目团队建设 1.1. 塔克曼(Tuckman)阶梯理论 1.2. 理论基础 1.2.1. 激励理论 1.2.1.1. 马斯洛需要层次理论 1.2.1.1.1. 生理需要 1.2.1.1.2. 安全需要 1.2.1.1.3. 社会交往的需要 1.2.1.1.4. 自尊的需要 1.2.1.1.5. 自我实现的需要 1.2.1.2. 赫茨伯格的双因素理论…

Leetcode力扣秋招刷题路-0802

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 802. 找到最终的安全状态 有一个有 n 个节点的有向图&#xff0c;节点按 0 到 n - 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示&#xff0c; graph[i]是与节点 i 相邻的节…

Git HEAD及detached head

背景&#xff1a;最近在使用git checkout重置HEAD指向&#xff0c;偶尔会出现Detached HEAD提示&#xff0c;于是想探究一下具体的原理及过程&#xff0c;遂写下了这篇文章。一般checkout用于切换分支和检出历史的某个节点&#xff0c;或恢复工作区的文件&#xff0c;这三个功能…