前端项目加载离线的百度地图,利用工具进行切指定区域的地图影像,自定义图层getTilesUrl

百度地图在开发中我们经常使用,但是有些项目是需要在内网进行,这时候我们不得不考虑项目中一些功能需要请求外网静态资源,比如百度地图。只有把包下载到本地,才能让静态资源文件的正常的访问。

目录

获取百度地图开发秘钥

引入在线百度地图

加载离线地图

获取百度地图离线包

引入百度地图离线包

显示指定区域的地图影像

全能电子地图下载器

街道图

混合图

百度地图切图工具

完整代码


获取百度地图开发秘钥

我们使用的v.3.0版本

在项目中要使用百度地图API,必须要有秘钥,获取方法教程jspopularGL | 百度地图API SDK

引入在线百度地图

<style scoped>
#baiduMap {
  height: 100%;
  width: 100%;
}

</style>

<template>
  <div id="baiduMap"></div>
</template>

<script>
import $ from 'jquery'
/* eslint-disable */
export default {
  name:'baiduMap',
  data(){
    return{
      url:'http://api.map.baidu.com/api?v=3.0&ak=你自己申请的秘钥&callback=createMap'
    }
  },
  mounted(){
    this.initMap()
  },
  methods:{
    addBaiDuAPI(url){
      return new Promise((resolve)=>{
        let script = document.createElement("script");
        script.src = url;
        document.body.appendChild(script);
        resolve()
      })
    },
    async initMap() {
      const maxZoom =19;
      let that = this;
      await that.addBaiDuAPI(that.url);

      //百度地图加载成功,会回调createMap这个函数
      window.createMap = () => {
        window.BMAP_NORMAL_MAP.m.X3 = window.BMAP_NORMAL_MAP.m.mc = window.BMAP_NORMAL_MAP.m.maxZoom = window.BMAP_PERSPECTIVE_MAP.m.X3 = window.BMAP_PERSPECTIVE_MAP.m.mc = window.BMAP_PERSPECTIVE_MAP.m.maxZoom = window.BMAP_SATELLITE_MAP.m.X3 = window.BMAP_SATELLITE_MAP.m.mc = window.BMAP_SATELLITE_MAP.m.maxZoom = window.BMAP_HYBRID_MAP.m.X3 = window.BMAP_HYBRID_MAP.m.mc = window.BMAP_HYBRID_MAP.m.maxZoom = maxZoom;
        //创建Map实例
        let map = new BMap.Map("baiduMap", {minZoom: 3, maxZoom: 19}); // 创建Map实例
        map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 创建点坐标,初始化地图,设置中心点坐标和地图级别
        map.setMapType(BMAP_NORMAL_MAP);
        window.baiduMap = map; //存储到全局变量baiduMap
        map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
        map.enableInertialDragging(); //两秒后开启惯性拖拽
        setTimeout(function (){
          //添加地图类型控件
          map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_ZOOM}));
          map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));
          //地图类型,地图,卫星
          var size = new BMap.Size(20, 220);
          map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP], anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
          map.addEventListener("mousemove", function (e) {$(".BMap_cpyCtrl").text("鼠标位置:" + e.point.lng + "," + e.point.lat)});
          //城市控件
          size = new BMap.Size(70, 10);
          map.addControl(new BMap.CityListControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
          /**
           map.addEventListener("zoomend", function() {
                let zoom = map.getZoom();
                map.centerAndZoom((new BMap.Point(lon, lat)),zoom)
              });
           **/
        },300)
      };
    },
  }
}
</script>

运行加载效果

加载离线地图

获取百度地图离线包

获取地址:链接:https://pan.baidu.com/s/1HgtmntYcQEdCDOii5ypazQ?pwd=yqe7提取码:yqe7

引入百度地图离线包

1、下载好的离线包,放在项目的公共资源目录下

2、修改代码,添加initOfflineMap方法加载离线地图

async initOfflineMap(){
      let that = this;
      //加载工具类javascript文件
      window.bmapConfig = {
        'tiles_path': '',      //显示普通地图,为空默认在 tiles/ 目录
        'tiles_satellite_path': '', //显示卫星影像,为空默认在 tiles_satellite/ ,只有底图没有地址标注
        'tiles_hybrid_path': ''  //显示带有街道的卫星影像,为空默认在 tiles_hybrid/,需和卫星影像配合使用
      };
      window.bmapConfig.home_dir = "/static/bmap_offline_demo/"; //地图API主目录
      window.bmapConfig.tiles_path = bmapConfig.home_dir + "/tiles";
      window.bmapConfig.tiles_satellite_path = bmapConfig.home_dir + "/tiles_satellite";
      window.bmapConfig.tiles_hybrid_path = bmapConfig.home_dir + "/tiles_hybird";
      await that.addScript(window.bmapConfig.home_dir + "map3.0.js");
      //创建Map实例
      let map = new BMap.Map("baiduMap", {minZoom: 3, maxZoom: 19}); // 创建Map实例
      map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 创建点坐标,初始化地图,设置中心点坐标和地图级别
      map.setMapType(BMAP_NORMAL_MAP);
      window.baiduMap = map; //存储到全局变量baiduMap
      map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
      map.enableInertialDragging(); //两秒后开启惯性拖拽
       setTimeout(function (){
         //添加地图类型控件
         map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_ZOOM}));
         map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));
         //地图类型,地图,卫星
         var size = new BMap.Size(20, 220);
         map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP], anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
         map.addEventListener("mousemove", function (e) {$(".BMap_cpyCtrl").text("鼠标位置:" + e.point.lng + "," + e.point.lat)});
         //城市控件
         size = new BMap.Size(70, 10);
         map.addControl(new BMap.CityListControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
         /**
          map.addEventListener("zoomend", function() {
                let zoom = map.getZoom();
                map.centerAndZoom((new BMap.Point(lon, lat)),zoom)
              });
          **/
       },300)
    },

3、在mounted中使用,需要注释在线地图的方法。

mounted(){
    // this.initMap() // 加载在线地图
    this.initOfflineMap() // 加载离线地图
  },

4、出现淡黄的画面说明引入离线地图成功。

显示指定区域的地图影像

利用切图工具,获取中国地图任意区域的,使用百度地图提供的自定义图层API(getTilesUrl)加载图像。

有两种工具切图:1、全能电子地图下载器。2、百度地图切图工具。

区别:

  • 百度地图切图工具只能切街道图,不能切混合图
  • 全能电子地图下载器app已经提供地图区域,切那个区域由我们自己决定。百度地图切图工具是根据一张图片(png格式)进行切图,根据地图瓦片规则进行切片

根据自己场景需求进行选择。

全能电子地图下载器:https://pan.baidu.com/s/1OzdhPWpIqiRaSiWGs2CVzw?pwd=wc41提取码:wc41。

百度地图切图工具:链接:https://pan.baidu.com/s/1ANKedI6PDr3Hx6mG55XXcw?pwd=m0bi提取码:m0bi。

全能电子地图下载器

2、地图级别一般用13到17级,最大只能切到17级(勾选上18、19什么的也没用,切不了)

一个区域切的级别很多的话,切图速度很慢,如果非要切多级别的,建议级别分开切

3、点击地图,选百度地图,需要的地图类型只有街道图和混合图,这两种地图需要分开切图。

街道图

1、选街道图后,可以选两种切图方式,一种是自己框选,一种是选择某个地区。

2、选择存放路径,点击开始,开始切图。

3、切图完成后,在目录下会有baidumaps文件夹,里面的roadmap文件就是街道图文件。把roadmap文件夹里的全部文件复制到离线地图包bmap_offline_demo/目录下。

roadmap目录名称可以自定义名称

混合图

1、选混合图,其他步骤和街道图一样。

2、切图完成后,把overlay文件夹里的全部文件复制到离线地图包bmap_offline_demo/的tiles_hybird文件夹里,再把satellite文件夹里的全部文件复制到离线地图包bmap_offline_demo/的tiles_satellite文件夹里。

3、添加代码

getTilesUrl方法会在地图缩放改变时,自动调用。

zoom:地图当前所在的缩放级别。

切好的图最好放在服务器上面,因为切的级别越大,文件就越多。切图大小在几百M,G,T级别都是很正常。

//自定义图层
      let tileLayer = new BMap.TileLayer({isTransparentPng: true});
      tileLayer.getTilesUrl = function (tileCoord, zoom) {
        if (zoom >= 3) {
          var x = tileCoord.x;
          var y = tileCoord.y;

          if (x < 0) {
            x = 'M' + (-x);
          }
          if (y < 0) {
            y = 'M' + (-y);
          }
          //根据瓦片的文件路径拼接URL
          return '/static/bmap_offline_demo/roadmap/' + zoom + '/' + x + '/' + y + '.png';
        }
      };
      map.addTileLayer(tileLayer);

4、显示效果,地图显示的就是我们刚刚切好的区域图

百度地图切图工具

1、双击运行BaiduMapTileCutter.exe。

2、选择存储路径,输出类型选择仅图块,输入经纬度,点击下一步。

3、自定义放大级别,最大为19,最小为3。设置之后点击下一步。

4、作为图层保存,点击下一步,随后开始切图。

5、切图成功后,去保存路径查找。

将切好的放大级别的文件放到服务器或项目上,在bmap_offline_demo/目录下新建文件夹,文件夹名称自定义,把切换的瓦片 7.8.9这三个级别放到自定义文件夹目录里面。

需要注意的是,这个自定义文件目录的名称和代码里面的路径一致

完整代码

baiduMap.vue

<style scoped>
#baiduMap {
  height: 100%;
  width: 100%;
}

</style>

<template>
  <div id="baiduMap"></div>
</template>

<script>
import $ from 'jquery'
/* eslint-disable */
export default {
  name:'baiduMap',
  data(){
    return{
      url:'http://api.map.baidu.com/api?v=3.0&ak=你自己申请的秘钥&callback=createMap'
    }
  },
  mounted(){
    // this.initMap() // 加载在线地图
    this.initOfflineMap() // 加载离线地图
  },
  methods:{
    addScript(src) {
      let script = document.createElement("script");
      script.src = src;
      document.body.appendChild(script);
    },
    addBaiDuAPI(url){
      return new Promise((resolve)=>{
        let script = document.createElement("script");
        script.src = url;
        document.body.appendChild(script);
        resolve()
      })
    },
    async initMap() {
      const maxZoom =19;
      let that = this;
      await that.addBaiDuAPI(that.url);

      //百度地图加载成功,会回调createMap这个函数
      window.createMap = () => {
        window.BMAP_NORMAL_MAP.m.X3 = window.BMAP_NORMAL_MAP.m.mc = window.BMAP_NORMAL_MAP.m.maxZoom = window.BMAP_PERSPECTIVE_MAP.m.X3 = window.BMAP_PERSPECTIVE_MAP.m.mc = window.BMAP_PERSPECTIVE_MAP.m.maxZoom = window.BMAP_SATELLITE_MAP.m.X3 = window.BMAP_SATELLITE_MAP.m.mc = window.BMAP_SATELLITE_MAP.m.maxZoom = window.BMAP_HYBRID_MAP.m.X3 = window.BMAP_HYBRID_MAP.m.mc = window.BMAP_HYBRID_MAP.m.maxZoom = maxZoom;
        //创建Map实例
        let map = new BMap.Map("baiduMap", {minZoom: 3, maxZoom: 19}); // 创建Map实例
        map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 创建点坐标,初始化地图,设置中心点坐标和地图级别
        map.setMapType(BMAP_NORMAL_MAP);
        window.baiduMap = map; //存储到全局变量baiduMap
        map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
        map.enableInertialDragging(); //两秒后开启惯性拖拽
        setTimeout(function (){
          //添加地图类型控件
          map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_ZOOM}));
          map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));
          //地图类型,地图,卫星
          var size = new BMap.Size(20, 220);
          map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP], anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
          map.addEventListener("mousemove", function (e) {$(".BMap_cpyCtrl").text("鼠标位置:" + e.point.lng + "," + e.point.lat)});
          //城市控件
          size = new BMap.Size(70, 10);
          map.addControl(new BMap.CityListControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
          /**
           map.addEventListener("zoomend", function() {
                let zoom = map.getZoom();
                map.centerAndZoom((new BMap.Point(lon, lat)),zoom)
              });
           **/
        },300)
      };
    },
    async initOfflineMap(){
      let that = this;
      //加载工具类javascript文件
      window.bmapConfig = {
        'tiles_path': '',      //显示普通地图,为空默认在 tiles/ 目录
        'tiles_satellite_path': '', //显示卫星影像,为空默认在 tiles_satellite/ ,只有底图没有地址标注
        'tiles_hybrid_path': ''  //显示带有街道的卫星影像,为空默认在 tiles_hybrid/,需和卫星影像配合使用
      };
      window.bmapConfig.home_dir = "static/bmap_offline_demo/"; //地图API主目录
      window.bmapConfig.tiles_path = bmapConfig.home_dir + "/tiles";
      window.bmapConfig.tiles_satellite_path = bmapConfig.home_dir + "/tiles_satellite";
      window.bmapConfig.tiles_hybrid_path = bmapConfig.home_dir + "/tiles_hybird";
      await that.addScript(window.bmapConfig.home_dir + "map3.0.js");
      //创建Map实例
      let map = new BMap.Map("baiduMap", {minZoom: 3, maxZoom: 19}); // 创建Map实例
      map.centerAndZoom(new BMap.Point(107.864933,25.990779), 14); // 创建点坐标,初始化地图,设置中心点坐标和地图级别
      map.setMapType(BMAP_NORMAL_MAP);
      window.baiduMap = map; //存储到全局变量baiduMap
      map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
      map.enableInertialDragging(); //两秒后开启惯性拖拽

      //自定义图层
      let tileLayer = new BMap.TileLayer({isTransparentPng: true});
      tileLayer.getTilesUrl = function (tileCoord, zoom) {
        if (zoom >= 3) {
          var x = tileCoord.x;
          var y = tileCoord.y;

          if (x < 0) {
            x = 'M' + (-x);
          }
          if (y < 0) {
            y = 'M' + (-y);
          }
          //根据瓦片的文件路径拼接URL
          return '/static/bmap_offline_demo/roadmap/' + zoom + '/' + x + '/' + y + '.png';
        }
      };
      map.addTileLayer(tileLayer);

       setTimeout(function (){
         //添加地图类型控件
         map.addControl(new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT, type: BMAP_NAVIGATION_CONTROL_ZOOM}));
         map.addControl(new BMap.NavigationControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT}));
         //地图类型,地图,卫星
         var size = new BMap.Size(20, 220);
         map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP], anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
         map.addEventListener("mousemove", function (e) {$(".BMap_cpyCtrl").text("鼠标位置:" + e.point.lng + "," + e.point.lat)});
         //城市控件
         size = new BMap.Size(70, 10);
         map.addControl(new BMap.CityListControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, offset: size,}));
          map.addEventListener("zoomend", function() {
                let zoom = map.getZoom();
                map.centerAndZoom((new BMap.Point(107.864933,25.990779)),zoom)
              });
       },300)
    },
  }
}
</script>

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

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

相关文章

OpenSPG docker 安装教程

文章目录 前言自述 一、OpenSPG1.介绍 二、安装步骤1.安装服务端2.客户端部署 前言 自述 我最近是想结合chatglm3-6b和知识图谱做一个垂直领域的技术规范的问答系统&#xff0c;过程中也遇到了很多困难&#xff0c;在模型微调上&#xff0c;在数据集收集整理上&#xff0c;在知…

Golang | Leetcode Golang题解之第69题x的平方根

题目&#xff1a; 题解&#xff1a; func mySqrt(x int) int {if x 0 {return 0}C, x0 : float64(x), float64(x)for {xi : 0.5 * (x0 C/x0)if math.Abs(x0 - xi) < 1e-7 {break}x0 xi}return int(x0) }

大数据之Hue中运行Sqoop常见的问题分析

Hue提供执行Sqoop命令的功能。 使用方法 与在终端执行Sqoop命令不同&#xff0c;在Hue中执行Sqoop命令&#xff0c;应该直接使用Sqoop的一级子命令。Sqoop在终端和Hue执行的区别 在终端执行 sqoop import \ --connect jdbc:oracle:thin:10.100.144.152:1521/ORACLE_DB \ --use…

Web API之DOM

DOM 一.认识DOM二.获取元素三.事件基础四.操作元素(1).改变元素内容(2).修改元素属性(str、herf、id、alt、title&#xff09;(3).修改表单属性(4).修改样式属性操作(5).小结 五.一些思想(1).排他思想(2).自定义属性的操作 六.节点操作1.认识2.节点层级关系3.创建和添加、删除、…

电子硬件设计-Xilinx FPGA/SoC前期功耗评估方法(1)

目录 1. 简介 2. 使用方法 2.1 设计输入 2.2 查看结果 3. 额外说明 4. 总结 1. 简介 XPE (Xilinx Power Estimator, 功耗估算器) 电子表格是一种功耗估算工具&#xff0c;用于项目的预设计和预实现阶段。 该工具可以帮助工程师进行架构评估、器件选择、合适的电源组件以…

SpringCloudAlibaba:4.3云原生网关higress的JWT 认证

概述 简介 JWT是一种用于双方之间传递安全信息的简洁的、URL安全的声明规范。 定义了一种简洁的&#xff0c;自包含的方法用于通信双方之间以Json对象的形式安全的传递信息&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景 session认证的缺点 1.安…

liunx命令行 带颜色

for i in {1..49}; do echo -e "\033[;${i}m 这是${i}的效果 oldboy\E[0M"; done

如何彻底将CAD或者Cadence卸载干净

最近因为升级软件需要先彻底删除这两个软件&#xff0c;发现无论如何都不能卸载干净&#xff0c;于是乎找到这样一个软件帮助卸载或查找剩余的软件残留&#xff1a; 官网&#xff1a;https://geekuninstaller.com 支持软件和 UWP 应用的卸载&#xff0c;查看软件注册表和安装目…

防爆地下水位自动监测设备

TH-DSW1随着科技的不断进步&#xff0c;地下水资源监测技术也在日新月异。防爆地下水位自动监测设备作为一种先进的水文监测工具&#xff0c;其应用不仅提高了水资源管理的效率&#xff0c;还为保障水资源安全提供了有力支撑。 一、防爆地下水位自动监测设备的优势 防爆地下水…

跨协议通讯无缝对接:Modbus-BACnet楼宇智能转换器深度解析

在现代化的建筑群里&#xff0c;智能楼宇管理系统如同神经系统&#xff0c;协调着各设备的运行。某大型商业综合体&#xff0c;集购物中心、办公区、酒店于一体&#xff0c;面对着来自不同供应商的设备&#xff0c;如何实现统一管理和高效通讯成了首要挑战。特别是其内部既有采…

UE5 FARFilter筛选器使用方法

UE5 查找资源时可以用FARFilter进行筛选&#xff0c;之前可以用ClassNames进行筛选&#xff0c;但是5.1之后就弃用这个属性改成ClassPaths属性 构造一个FTopLevelAssetPath对象需要两个FName参数&#xff0c;但是没找到应该传什么 查找官方文档&#xff0c;明显是错误的&#x…

基于SSM的“小型企业人事管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“小型企业人事管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 登录界面 个人信息页面 用户打卡页面 扣…

Docker 入门篇(七)-- Docker 安装 nginx

引言 Docker 系列文章 Docker 入门篇&#xff08;一&#xff09;-- 简介与安装教程&#xff08;Windows和Linux&#xff09; Docker官方镜像 https://hub.docker.com/ 一、安装 nginx 1.安装环境 Linux 环境&#xff1a;centos 7docker 版本&#xff1a;26.1.0nginx版本&…

CTF-密码学基础

概述 密码学(Cryptolopy)&#xff1a;是研究信息系统安全保密的科学 密码学研究的两个方向&#xff1a; 密码编码学(Cryptography)&#xff1a;主要研究对信息进行编码&#xff0c;实现对信息的隐蔽密码分析学(Cryptanalytics)&#xff1a;主要研究加密信息的破译或消息的伪造…

Baidu Comate——让软件研发更高效、更智能

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;给自己一个梦想&#xff0c;给世界一个惊喜。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章目录 一、Baidu Co…

Spring 事务及事务传播机制(1)

目录 事务 回顾: 什么是事务 为什么需要事务 事务的操作 Spring事务的实现 Spring编程式事务(简单了解即可, 问就是基本不用) 观察事务提交 观察事务回滚 Spring声明式事务 Transactional Transactional作用 事务 回顾: 什么是事务 定义: 事务是指逻辑上的一组操作, 构…

最大数字——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位&#xff0c;因为对高位的影响永远大于对低位的影响。然后我们再来分析一下&#xff0c;如何使用这两种操作&#xff1f;对于加操作&#xff0c;如果能使这一位的数字加到9则变成9&#xff0…

^_^填坑备忘^_^C#自动化编程实现STK+Exata对卫星互联网星座进行网络仿真

C#实际选择 STK11版本 or STK12版本的问题备注。 【C#自动化客户端调用STK时&#xff0c;实际选择 STK11版本 or STK12版本 的调试运行备注】 以下代码“更新并重新打包备份为”〔testSTKQualNetInterface备份08.1_★避坑★【种子卫星&#xff1a;天线直接安装在卫星上&#…

电机控制系列模块解析(19)—— 反电势观测器

随着现代工业自动化技术的飞速发展&#xff0c;交流电机作为关键的动力装置&#xff0c;其控制精度与效率日益受到重视。其中&#xff0c;无位置传感器控制技术由于其成本低、可靠性高、系统简洁等优点&#xff0c;逐渐成为研究热点。本文将对交流电机反电势观测器这一关键技术…

三维空间刚体运动

三维空间刚体运动是指刚体在三维空间中的运动&#xff0c;这种运动由平移和旋转构成。平移是指物体在空间中沿某一方向移动一定的距离&#xff0c;而旋转则是指物体绕某一轴旋转一定的角度。这两种运动都不会改变物体的形状和大小&#xff0c;因此被称为刚体运动。 在描述三维…