高德地图vue实现自定义标点热力图效果(缩放时展示不同数据)

高德地图插件引入省略。。。样式和vue基础组件省略。。。

  • 如果每个标点没有数值,则可以用点聚合来实现功能
  • 下面例子,每个标点会有按市统计的数值,而且缩放一定程度时,需要展示按省统计的标点,因此需要自定义标点样式和监听地图缩放时间,来实现这个功能
  1. 效果图
    在这里插入图片描述

1.1:初始化时,按省进行统计
在这里插入图片描述
1.2:地图放大一定程度时,按市进行统计
在这里插入图片描述

  1. 同一个经纬点可支持展示两个数据

在这里插入图片描述

  1. 代码实现
<template>
  <div class="infringement-map">
    <div style="height: 100%;" class="card-style">
      <Row style="height: 100%" :gutter="16">
        <Col span="24" style="border-left:1px solid #E5E5E5;height: calc(100% - 30px);">
          <Row class="detail-header " style="background-color: #fff;">
            <span>高德热力图</span>
          </Row>
          <Row class="bg-white top-border" style="padding: 5px 10px;height: 100%" :gutter="22">
            <Col style="height: 100%;" span="24">
              <div class="box-wrap">
                <div id="tort-map"></div>
              </div>
            </Col>
          </Row>
        </Col>
      </Row>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      map: null,
      cityCoordinateList: [],
      provinceCoordinateList: [],
      listData: [],
      markersList: [],
      totalPoints: null,
      isLoadedProvince: false,
      isLoadedCity: false
    }
  },
  mounted() {
    this.initMap()
    this.searchHandler()
  },
  beforeDestroy() {
    this.map && this.map.destroy()
    this.zoomOff()
  },
  methods: {
    searchHandler() {
      const res = {
        'code': 0,
        'message': '',
        'data': {
          'cityCoordinateList': [
            {
              'latitude': '116.405285',
              'longitude': '39.904989',
              'name': '北京',
              'sellerQty': 14,
              'mfrsQty': null
            },
            {
              'latitude': '114.352482',
              'longitude': '36.103442',
              'name': '安阳市',
              'sellerQty': null,
              'mfrsQty': 1
            },
            {
              'latitude': '113.051227',
              'longitude': '23.685022',
              'name': '清远市',
              'sellerQty': 9,
              'mfrsQty': null
            },
            {
              'latitude': '116.587245',
              'longitude': '35.415393',
              'name': '济宁市',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '102.712251',
              'longitude': '25.040609',
              'name': '昆明市',
              'sellerQty': null,
              'mfrsQty': 4
            },
            {
              'latitude': '111.975107',
              'longitude': '21.859222',
              'name': '阳江市',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '119.649506',
              'longitude': '29.089524',
              'name': '金华市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '120.153576',
              'longitude': '30.287459',
              'name': '杭州市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '114.412599',
              'longitude': '23.079404',
              'name': '惠州市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '113.442973',
              'longitude': '30.328407',
              'name': '仙桃市',
              'sellerQty': 4,
              'mfrsQty': null
            },
            {
              'latitude': '121.472644',
              'longitude': '31.231706',
              'name': '上海',
              'sellerQty': 3,
              'mfrsQty': null
            },
            {
              'latitude': '111.134335',
              'longitude': '37.524366',
              'name': '吕梁市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '108.948024',
              'longitude': '34.263161',
              'name': '西安市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '117.043551',
              'longitude': '30.50883',
              'name': '安庆市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '117.190182',
              'longitude': '39.125596',
              'name': '天津',
              'sellerQty': null,
              'mfrsQty': 1
            },
            {
              'latitude': '117.283042',
              'longitude': '31.86119',
              'name': '合肥市',
              'sellerQty': null,
              'mfrsQty': 1
            },
            {
              'latitude': '118.275162',
              'longitude': '33.963008',
              'name': '宿迁市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '119.452753',
              'longitude': '32.204402',
              'name': '镇江市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '119.527082',
              'longitude': '26.65924',
              'name': '宁德市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '113.132855',
              'longitude': '29.37029',
              'name': '岳阳市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '118.175393',
              'longitude': '39.635113',
              'name': '唐山市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '110.364977',
              'longitude': '21.274898',
              'name': '湛江市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '87.617733',
              'longitude': '43.792818',
              'name': '乌鲁木齐市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '118.11022',
              'longitude': '24.490474',
              'name': '厦门市',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '114.085947',
              'longitude': '22.547',
              'name': '深圳市',
              'sellerQty': 4,
              'mfrsQty': null
            },
            {
              'latitude': '82.074778',
              'longitude': '44.903258',
              'name': '博尔塔拉蒙古自治州',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '116.632301',
              'longitude': '23.661701',
              'name': '潮州市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '113.280637',
              'longitude': '23.125178',
              'name': '广州市',
              'sellerQty': 1,
              'mfrsQty': 1
            },
            {
              'latitude': '115.469381',
              'longitude': '35.246531',
              'name': '菏泽市',
              'sellerQty': null,
              'mfrsQty': 1
            },
            {
              'latitude': '109.702392',
              'longitude': '18.638189',
              'name': '保亭黎族苗族自治县',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '126.427839',
              'longitude': '41.942505',
              'name': '白山市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '106.504962',
              'longitude': '29.533155',
              'name': '重庆',
              'sellerQty': 1,
              'mfrsQty': 1
            },
            {
              'latitude': '126.642464',
              'longitude': '45.756967',
              'name': '哈尔滨市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '110.299121',
              'longitude': '25.274215',
              'name': '桂林市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '114.391136',
              'longitude': '27.8043',
              'name': '宜春市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '113.665412',
              'longitude': '34.757975',
              'name': '郑州市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '105.724998',
              'longitude': '34.578529',
              'name': '天水市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '108.320004',
              'longitude': '22.82402',
              'name': '南宁市',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '120.301663',
              'longitude': '31.574729',
              'name': '无锡市',
              'sellerQty': 2,
              'mfrsQty': null
            }
          ],
          'provinceCoordinateList': [
            {
              'latitude': '103.823557',
              'longitude': '36.058039',
              'name': '甘肃省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '114.502461',
              'longitude': '38.045474',
              'name': '河北省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '117.000923',
              'longitude': '36.675807',
              'name': '山东省',
              'sellerQty': 2,
              'mfrsQty': 1
            },
            {
              'latitude': '118.767413',
              'longitude': '32.041544',
              'name': '江苏省',
              'sellerQty': 4,
              'mfrsQty': null
            },
            {
              'latitude': '116.405285',
              'longitude': '39.904989',
              'name': '北京',
              'sellerQty': 14,
              'mfrsQty': null
            },
            {
              'latitude': '102.712251',
              'longitude': '25.040609',
              'name': '云南省',
              'sellerQty': null,
              'mfrsQty': 4
            },
            {
              'latitude': '110.33119',
              'longitude': '20.031971',
              'name': '海南省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '125.3245',
              'longitude': '43.886841',
              'name': '吉林省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '119.306239',
              'longitude': '26.075302',
              'name': '福建省',
              'sellerQty': 3,
              'mfrsQty': null
            },
            {
              'latitude': '120.153576',
              'longitude': '30.287459',
              'name': '浙江省',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '114.298572',
              'longitude': '30.584355',
              'name': '湖北省',
              'sellerQty': 4,
              'mfrsQty': null
            },
            {
              'latitude': '121.472644',
              'longitude': '31.231706',
              'name': '上海',
              'sellerQty': 3,
              'mfrsQty': null
            },
            {
              'latitude': '113.280637',
              'longitude': '23.125178',
              'name': '广东省',
              'sellerQty': 19,
              'mfrsQty': 1
            },
            {
              'latitude': '106.504962',
              'longitude': '29.533155',
              'name': '重庆',
              'sellerQty': 1,
              'mfrsQty': 1
            },
            {
              'latitude': '112.549248',
              'longitude': '37.857014',
              'name': '山西省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '117.190182',
              'longitude': '39.125596',
              'name': '天津',
              'sellerQty': null,
              'mfrsQty': 1
            },
            {
              'latitude': '115.892151',
              'longitude': '28.676493',
              'name': '江西省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '108.948024',
              'longitude': '34.263161',
              'name': '陕西省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '126.642464',
              'longitude': '45.756967',
              'name': '黑龙江省',
              'sellerQty': 1,
              'mfrsQty': null
            },
            {
              'latitude': '113.665412',
              'longitude': '34.757975',
              'name': '河南省',
              'sellerQty': 1,
              'mfrsQty': 1
            },
            {
              'latitude': '87.617733',
              'longitude': '43.792818',
              'name': '新疆维吾尔自治区',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '117.283042',
              'longitude': '31.86119',
              'name': '安徽省',
              'sellerQty': 1,
              'mfrsQty': 1
            },
            {
              'latitude': '108.320004',
              'longitude': '22.82402',
              'name': '广西壮族自治区',
              'sellerQty': 2,
              'mfrsQty': null
            },
            {
              'latitude': '112.982279',
              'longitude': '28.19409',
              'name': '湖南省',
              'sellerQty': 1,
              'mfrsQty': null
            }
          ]
        }
      }
      this.removeMarkers()
      // 按市统计的数据
      this.cityCoordinateList = res.data && res.data.cityCoordinateList || []
      // 按省统计的数据
      this.provinceCoordinateList = res.data && res.data.provinceCoordinateList || []
      // 默认按省进行标点,按省汇总标点总数
      this.totalPoints = this.provinceCoordinateList.length
      this.addPoint('province')
    },
    /** ******  地图 start  ********/
    // 初始化地图
    initMap() {
      this.map = new AMap.Map('tort-map', {
        zoom: 4, // 级别
        mapStyle: 'amap://styles/grey',
        center: [116.397428, 39.90923], // 中心点坐标
        viewMode: '3D' // 使用3D视图
      })
      this.map.on('complete', () => {
        console.log('地图渲染完成')
        this.zoomOn()
      })
    },
    addPoint(type) {
      const pointList = type === 'province' ? this.provinceCoordinateList : this.cityCoordinateList
      pointList.forEach(item => {
        const marker = new AMap.Marker({
          position: [item.latitude, item.longitude], // 位置
          // 将 html 传给 content
          content: this.preRenderMarker(item)
        })
        this.map.add(marker) // 添加到地图
        // 记录地图上的标点,移除时需要
        this.markersList.push(marker)
      })
    },
    preRenderMarker(item) {
      // item.mfrsQty:M数据  item.sellerQty:S数据
      const { mfrsQty, sellerQty } = item
      if (mfrsQty && sellerQty) {
        // M数据和S数据都有值,则渲染复合的标记
        return this.renderClusterMarkerBoth(mfrsQty, sellerQty)
      } else if (mfrsQty) {
        // 只有M数据有值,渲染M数据的标点
        return this.renderClusterMarker(mfrsQty, 'mfrsQty')
      } else if (sellerQty) {
        // 只有S数据有值,渲染S数据的标点
        return this.renderClusterMarker(sellerQty, 'sellerQty')
      }
    },
    getBgColorByType (clusterCount, type) {
      let bgColor = null
      // 聚合点配色
      const defaultColor = type === 'mfrsQty' ? [
        '253,187,187',
        '247,162,162',
        '237,127,127',
        '228,93,93',
        '219,60,60'
      ]
        : [
          '195,252,195',
          '178,240,178',
          '153,222,154',
          '130,205,131',
          '120,198,121'
        ]
      if (clusterCount >= 0 && clusterCount < 10) {
        bgColor = defaultColor[0]
      } else if (clusterCount >= 10 && clusterCount < 50) {
        bgColor = defaultColor[1]
      } else if (clusterCount >= 50 && clusterCount < 100) {
        bgColor = defaultColor[2]
      } else if (clusterCount >= 100 && clusterCount < 200) {
        bgColor = defaultColor[3]
      } else if (clusterCount >= 200) {
        bgColor = defaultColor[4]
      }
      return bgColor
    },
    // 单种类型的标点自定义样式
    renderClusterMarker (count, type) {
      // 聚合中点个数
      const clusterCount = count
      const bgColor = this.getBgColorByType(count, type)
      const div = document.createElement('div')
      div.style.backgroundColor = 'rgba(' + bgColor + ',.5)'
      const size = Math.round(10 + Math.pow(clusterCount / this.totalPoints, 1 / 10) * 20)
      div.style.width = div.style.height = size + 'px'
      div.style.border = 'solid 1px rgba(' + bgColor + ',1)'
      div.style.borderRadius = size / 2 + 'px'
      div.innerHTML = clusterCount
      div.style.lineHeight = size + 'px'
      div.style.color = '#ffffff'
      div.style.fontSize = '12px'
      div.style.textAlign = 'center'
      return div
    },
    // 两种类型的标点自定义样式
    renderClusterMarkerBoth (mfrsQty, sellerQty) {
      const bgColorS = this.getBgColorByType(sellerQty, 'sellerQty')
      const bgColorM = this.getBgColorByType(mfrsQty, 'mfrsQty')
      const divDom = document.createElement('div')
      const divS = document.createElement('div')
      const divM = document.createElement('div')

      divDom.style.display = 'flex'

      divS.style.backgroundColor = 'rgba(' + bgColorS + ',.5)'
      divS.style.width = 30 + 'px'
      divS.style.height = 20 + 'px'
      divS.style.lineHeight = 20 + 'px'
      divS.style.border = 'solid 1px rgba(' + bgColorS + ',1)'
      divS.style.borderRadius = '30px 0 0 30px'
      divS.innerHTML = sellerQty
      divS.style.color = '#ffffff'
      divS.style.fontSize = '12px'
      divS.style.textAlign = 'center'

      divM.style.backgroundColor = 'rgba(' + bgColorM + ',.5)'
      divM.style.width = 30 + 'px'
      divM.style.height = 20 + 'px'
      divM.style.lineHeight = 20 + 'px'
      divM.style.border = 'solid 1px rgba(' + bgColorM + ',1)'
      divM.style.borderRadius = '0 30px 30px 0'
      divM.innerHTML = mfrsQty
      divM.style.color = '#ffffff'
      divM.style.fontSize = '12px'
      divM.style.textAlign = 'center'

      divDom.append(divS)
      divDom.append(divM)
      return divDom
    },
    removeMarkers() {
      this.map && this.map.remove(this.markersList)
    },
    // 地图缩放等级改变
    mapZoom() {
      const currentZoom = this.map.getZoom() // 获取当前地图级别
      if (currentZoom <= 4 && !this.isLoadedProvince) {
        // 按省来渲染标记
        this.totalPoints = this.provinceCoordinateList.length
        this.isLoadedProvince = true
        this.isLoadedCity = false
        this.removeMarkers()
        this.addPoint('province')
      } else if (currentZoom > 4 && !this.isLoadedCity) {
        // 按市渲染标记
        this.totalPoints = this.cityCoordinateList.length
        this.isLoadedCity = true
        this.isLoadedProvince = false
        this.removeMarkers()
        this.addPoint('city')
      }
    },
    // 地图缩放事件绑定
    zoomOn() {
      this.map && this.map.on('zoomchange', this.mapZoom)
    },
    // 地图缩放事件解绑
    zoomOff() {
      this.map && this.map.off('zoomchange', this.mapZoom)
    }
  }
}

</script>

<style scoped lang="scss">
.infringement-map {
  height: 100%;
  margin-top: -35px;
  .box-wrap {
    height: 100%;
    #tort-map {
      width: 100%;
      height: 100%;

      .citylist_popup_main {
        .city_content_top {
          box-sizing: content-box;
        }
      }
    }
  }
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多相Buck的工作原理

什么是多相Buck电源&#xff1f; 多相电源控制器是一种通过同时控制多个电源相位的设备&#xff0c;以提供稳定的电力供应。相位是指电源中的电流和电压波形。多相控制器的设计旨在最大程度地减小电力转换系统的纹波&#xff0c;并提高整体能效。它通常包含一系列的功率级联&a…

python六子棋ai对战(alpha-beta)剪枝算法

核心代码 def __init__(self): #初始化函数self.num0 #对yi次数self.rows 10 #初始化棋盘10行self.cols 10 # 初始化棋盘10列self.rank6 #阶数 代表六子棋self.empty_board() #清空棋盘self.V 10 #攻击程度self.E10 #防守程度self.depth2 #思考深度…

spring 的概述和入门

​ 我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; …

cmake生成表达式

不积小流&#xff0c;无以成江海 <CONFIG:RELEASE> config这个关键字&#xff0c;主要是看CMAKE_BUILD_TYPE这个变量的值是不是和冒号后的一样&#xff0c;一样的话就返回true, 否则就是false. cmake_minimum_required(VERSION 3.10) project(Test) set(CMAKE_CXX_STA…

JVM的内存结构详解「重点篇」

一、JVM虚拟机数据区 虚拟机栈 1、 线程私有 2、 每个方法被执行的时候都会创建一个栈帧用于存储局部变量表&#xff0c;操作栈&#xff0c;动态链接&#xff0c;方法出口等信息。每一个方法被调用的过程就对应一个栈帧在虚拟机栈中从入栈到出栈的过程。 3、栈帧: 是用来存储…

HarmonyOS应用开发工具DevEco Studio安装与使用

语雀知识库地址&#xff1a;语雀HarmonyOS知识库 飞书知识库地址&#xff1a;飞书HarmonyOS知识库 知识库内容逐步完善中… 工欲善其事必先利其器&#xff0c;要编写HarmonyOS应用就需要用到官方提供的IDE工具来编写相应的代码。 在鸿蒙开发者官网&#xff0c;其提供了官方的开…

关于什么是 JVM

关于什么是 JVM&#xff0c;看看普通⼈和⾼⼿的回答。 普通人 JVM 就是 Java 虚拟机&#xff0c;是⽤来运⾏我们平时所写的 Java 代码的。优点是它会 ⾃动进⾏内存管理和垃圾回收&#xff0c;缺点是⼀旦发⽣问题&#xff0c;要是不了解 JVM 的运⾏ 机制&#xff0c; 就很难…

企业能用ov多域名https证书

多域名https证书是https数字证书中灵活性较高的一款产品。各个正规CA认证机构旗下的多域名https证书都有同时保护多个域名站点的功能&#xff0c;但是和其它域名https证书不一样的是多域名https证书保护的域名类型比较广。多域名https证书可以保护多个主域名和子域名站点&#…

贪吃的猴子 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 一只贪吃的猴子&#xff0c;来到一个果园&#xff0c;发现许多串香蕉排成一行&#xff0c;每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香…

低多边形3D建模石头材质纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

HarmonyOS4.0从零开始的开发教程09页签切换

HarmonyOS&#xff08;七&#xff09;页签切换 List组件和Grid组件的使用 Tabs组件的使用 概述 在我们常用的应用中&#xff0c;经常会有视图内容切换的场景&#xff0c;来展示更加丰富的内容。比如下面这个页面&#xff0c;点击底部的页签的选项&#xff0c;可以实现“首页…

react Hooks实现原理

Fiber 上篇文章fiber简单理解记录了react fiber架构&#xff0c;Hooks是基于fiber链表来实现的。阅读以下内容时建议先了解react fiber。 jsx -> render function -> vdom -> fiber树 -> dom vdom 转 fiber 的过程称为 recocile。diff算法就是在recocile这个过程…

html中一个div中平均分三个盒子

html中一个div中平均分三个盒子 html中一个div中平均分三个盒子&#xff0c;大小自适应&#xff0c;随着界面的大小而改变大小 1、截图展示 2.代码部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta …

QT使用SQLite 超详细(增删改查、包括对大量数据快速存储和更新)

QTSQLite 在QT中使用sqlite数据库&#xff0c;有多种使用方法&#xff0c;在这里我只提供几种简单&#xff0c;代码简短的方法&#xff0c;包括一些特殊字符处理。在这里也给大家说明一下&#xff0c;如果你每次要存储的数据量很大&#xff0c;建议使用事务&#xff08;代码中…

老师的就业前景和发展

我常常被问到&#xff0c;“老师的就业前景和发展怎么样&#xff1f;”作为一名老师&#xff0c;我必须承认&#xff0c;教育行业的就业前景和发展并不是特别乐观。但是&#xff0c;这并不意味着没有机会&#xff0c;也不意味着我们不能为自己的未来做出规划。 教育行业的发展趋…

智能无人零售:革新零售消费体验的未来

智能无人零售&#xff1a;革新零售消费体验的未来 在当今数字化时代&#xff0c;智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展&#xff0c;为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…

基于SSH的java记账管理系统

基于SSH的java记账管理系统 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 项目类型&#xff1a;Java EE项目 项目名称&#xff1a;基于SSH的记账管理系统 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 前端技术&#xff1a;HTML、CS…

空间运算设备-Apple Vision Pro

苹果以其在科技领域的创新而闻名&#xff0c;他们致力于推动技术的边界&#xff0c;这在他们的产品中表现得非常明显。他们尝试开发一项的新型突破性显示技术。在 2023 年 6 月 5 日官网宣布将发布 Apple Vision Pro 头戴空间设备&#xff0c;我们一起来了解一下 Apple Vision …

如何选择合适的运筹优化求解器?

文章目录 前言求解器对比问题延伸&#xff1a;商用求解器和开源求解器的差别是什么&#xff1f; 求解器PK总结参考资料 前言 求解器对于运筹算法工程师而言&#xff0c;常常像一个黑盒&#xff0c;我们扔进去输入数据和数学模型&#xff0c;求解器给我们吐出一个解出来。这种状…

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段样题

2023年山东省职业院校技能大赛信息安全管理与评估二三阶段 样题 第二阶段 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、竞赛内容 Geek极安云科专注技能竞赛技术提升&#xff0c;基于各大赛项提供全面的系统性培训&#xff0c;拥有完整的培训体系。团队拥有曾…