百度GL地圖實現某一段路的路況(new BMapGL.DrivingRouteLine)

功能描述:

1.百度地圖實現點擊地圖出現起點,再次點擊出現終點(起點終點能拖動)繪制完終點后獲取該路的路況并且起點和終點可以拖動實現實時更新(新繪制的路段的)路況

2.地點搜索

效果如下:?

?關鍵代碼:

new BMapGL.DrivingRouteLine(this.bdMap, {renderOptions: {map: this.bdMap,enableDragging: true,autoViewport: true,lineLayerStyle: {// strokeTextureUrl: null,showTraffic: true}},onSearchComplete: searchComplete,onPolylinesSet: () => {this.drivingTime = drivingTime;this.drivingDistance = this.convertDistance(drivingDistance);this.pointsArr = deepClone(pointsArr);},});

完整代碼:

<!--* @Description: 百度地圖自動獲取路段點位 頁面* @Author: mhf* @Date: 2024/2/21 11:55
-->
<template><el-dialogwidth="1300px"v-dialog-outdestroy-on-closeappend-to-bodyv-if="dialogVisible":title="title":visible.sync="dialogVisible":before-close="hideDialog":close-on-click-modal="false"><div class="dialog-body"><div id="map-container"></div><div class="dialog-body-search"><el-input@input="searchPlace"@clear="searchPlace"clearablev-model="searchText"size="small"placeholder="輸入關鍵字查詢"></el-input></div><div><div class="dialog-body-res" v-if="searchRes.length > 0"><divv-for="(item, index) in searchRes":key="index"@click="chooseIt(item)"><el-tooltipeffect="light":content="item.address + item.title"placement="right-end"overflow><span> {{ item.address + item.title }} </span></el-tooltip></div></div><divclass="dialog-body-none"v-else-if="searchRes.length === 0 && searchText"><em> 沒有搜索結果... </em></div></div></div><lineH /><div class="dialog-footer"><el-button @click="hideDialog">取 消</el-button><el-button type="primary" @click="submitPoints">確 定</el-button></div></el-dialog>
</template><script>
import { deepClone } from "@/utils/deepClone";export default {name: "bdMapDrawLinesDialog",components: {},props: {},dicts: [],data() {return {dialogVisible: false,title: "",bdMap: null,mapCenter: {lng: 120.73957130336815, // 經度lat: 30.748406263284365,}, // 地圖中心點mapZoom: 14, // 地圖縮放級別startPoint: {lng: 120.72532015906316,lat: 30.747761317225542,},endPoint: {lng: 120.73105566952,lat: 30.74805738479023,},drivingTime: 0, // 駕駛時間 分鐘drivingDistance: 0, // 行駛距離 公里pointsArr: [// {//   lat: 30.748406263284365,//   lng: 120.73957130336815// },// {//   lat: 30.748406263284365,//   lng: 120.73957130336815// },// {//   lat: 30.748406263284365,//   lng: 120.73957130336815// }], // 最終保存的點位信息 (路段中的所有點位[包含:起點,終點])mapClickListener: null, // 地圖點擊事件監聽器searchText: undefined, // 查詢的關鍵字searchPoint: {}, // 查找到的點位searchRes: [], // 查到結果};},methods: {showDialog(data) {this.dialogVisible = true;this.title = data.title;if (data.data) {// 回顯線段和起點終點let pointsArr = JSON.parse(data.data);this.pointsArr = pointsArr;this.startPoint = pointsArr[0];this.endPoint = pointsArr[pointsArr.length - 1];} else {}this.initBdMap(data.data);},hideDialog() {// this.mapCenter = {//   lng: 120.73957130336815,//   lat: 30.748406263284365// }this.bdMap.destroy();this.bdMap = null;removeEventListener("click", this.mapClickListener);this.mapClickListener = null;this.dialogVisible = false;this.removeSearch();},removeSearch() {// if (this.searchPoint) {//   this.removeMarker("searchPoint")// }this.searchPoint = {};this.searchText = undefined;this.searchRes = [];},submitPoints() {if (this.pointsArr.length < 2) this.$message.warning("請先繪制線路");this.$emit("on-response", {pointsArr: this.pointsArr,km: this.drivingDistance,});this.hideDialog();},initBdMap(flag) {this.$nextTick(() => {this.bdMap = new BMapGL.Map("map-container");this.bdMap.centerAndZoom(new BMapGL.Point(this.mapCenter.lng, this.mapCenter.lat),this.mapZoom,);this.bdMap.enableScrollWheelZoom(true);if (!flag) {// 新增則繪制起點和終點this.drawMarker();} else {// 編輯或者詳情則回顯繪制的路線this.drawRouteLine();}setTimeout(() => {this.setViewport([this.startPoint, this.endPoint]);}, 500);});},/*** @Event 繪制路線* @description:* @author: mhf* @time: 2024-02-01 11:41:40**/drawRouteLine() {let drivingTime = 0;let drivingDistance = 0;let pointsArr = [];let that = this;var searchComplete = function (results) {if (transit.getStatus() == BMAP_STATUS_SUCCESS) {var plan = results.getPlan(0);drivingTime = plan.getDuration(true); //獲取時間drivingDistance = plan.getDistance(true); //獲取距離pointsArr = that.makePointsArr(plan._lines); // 路段中所有的點位數組that.removeMarker();}};var transit = new BMapGL.DrivingRouteLine(this.bdMap, {renderOptions: {map: this.bdMap,enableDragging: true,autoViewport: true,lineLayerStyle: {// strokeTextureUrl: null,showTraffic: true}},onSearchComplete: searchComplete,onPolylinesSet: () => {this.drivingTime = drivingTime;this.drivingDistance = this.convertDistance(drivingDistance);this.pointsArr = deepClone(pointsArr);},});let start = new BMapGL.Point(this.startPoint.lng, this.startPoint.lat);let end = new BMapGL.Point(this.endPoint.lng, this.endPoint.lat);transit.search(start, end);},/*** @Event 調整地圖到最佳視野* @param: portArr 點位數組 [pot1, pot2, pot3]* @description:* @author: mhf* @time: 2024-02-01 10:12:24**/setViewport(portArr) {this.bdMap.setViewport(portArr);},/*** @Event 將路徑單位統一成千米* @description: 15.9公里 -> 15.9; 500米 -> 0.5* @author: mhf* @time: 2024-02-01 10:43:07**/convertDistance(distance) {let resKm = 0;if (distance.indexOf("公里") > -1) {resKm = distance.substring(0, distance.indexOf("公里"));} else if (distance.indexOf("米") > -1) {resKm = distance.substring(0, distance.indexOf("米")) / 1000;} else {resKm = distance;}return resKm;},/*** @Event 繪制點位* @param: obj 點位對象,* @param: myIcon 自定義圖標,*  @param: customObj 自定義參數,* @description: this.makePoint({lng: 116.404, lat: 39.119})* @author: mhf* @time: 2024-02-01 13:43:13**/makePoint(obj, myIcon, customObj) {let point = new BMapGL.Point(obj.lng, obj.lat); // 創建點let marker = new BMapGL.Marker(point, {icon: myIcon ? myIcon : null,}); // 創建標注marker.customObj = customObj;this.bdMap.addOverlay(marker);marker.addEventListener("click", (e) => {});},/*** @Event 將指定數組嵌套的數據轉成扁平化的點位數據* @description:* @author: mhf* @time: 2024-02-01 13:57:20**/makePointsArr(arr) {return arr.flatMap((item) => item.points);},/*** @Event: 點擊地圖繪制點位* @description:* @author: mhf* @time: 2024-02-01 17:24:04**/drawMarker() {let num = 0;this.mapClickListener = this.bdMap.addEventListener("click", (e) => {num++;let obj = {lng: e.latlng.lng,lat: e.latlng.lat,};if (num === 1) {this.startPoint = obj;var myIcon = new BMapGL.Icon("/img/startPoint.png",new BMapGL.Size(25, 40),);this.makePoint(obj, myIcon, { name: "startPoint" });} else if (num === 2) {this.endPoint = obj;this.drawRouteLine();}});},/*** @Event 移除點位* @description:* @author: mhf* @time: 2024-02-01 19:36:52**/removeMarker(name = "startPoint") {let makerArr = this.bdMap.getOverlays();for (let i = 0; i < makerArr.length; i++) {if (makerArr[i].customObj?.name === name) {this.bdMap.removeOverlay(makerArr[i]); // 移除指定點位}}// this.bdMap.clearOverlays() // 移除所有點位},/*** @Event 輸入關鍵字查詢地點* @description:* @author: mhf* @time: 2024-02-21 15:56:42**/searchPlace(e) {this.searchRes = [];if (e) {const myFun = () => {this.searchRes = local.getResults()._pois;};var local = new BMapGL.LocalSearch(this.bdMap, {onSearchComplete: myFun,});local.search(e);} else {this.removeMarker("searchPoint");}},chooseIt(item) {this.searchPoint = item.point;if (this.searchPoint) {this.removeMarker("searchPoint");}this.makePoint({ lng: this.searchPoint.lng, lat: this.searchPoint.lat },null,{ name: "searchPoint" },false,);this.bdMap.centerAndZoom(item.point, 18);},},created() {},mounted() {},
};
</script><style lang="scss" scoped>
::v-deep .el-dialog__body {padding: 20px 0 0 !important;
}.dialog-body {padding: 0 20px 20px;min-height: 60vh;max-height: 65vh;overflow-y: auto;position: relative;#map-container {min-height: 60vh;width: 100%;::v-deep .anchorBL img {display: none;}::v-deep .BMap_cpyCtrl span {display: none !important;}}&-search {width: 300px;position: absolute;top: 20px;left: 40px;z-index: 999 !important;}&-res {width: 300px;max-height: 400px;position: absolute;top: 50px;left: 40px;z-index: 999 !important;padding: 10px;background: #fff;border: 1px solid #eee;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);overflow-y: auto;span {display: block;width: 278px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;line-height: 30px;&:hover {cursor: pointer;border: 1px solid #409eff;}}}&-none {width: 300px;position: absolute;top: 54px;left: 40px;z-index: 999 !important;padding: 10px;background: #fff;line-height: 40px;border: 1px solid #eee;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);}
}.dialog-footer {text-align: center;padding: 10px 0 18px;
}
</style>

圖標:

示例數據(點擊保存之后的數據)

[{"lng":112.318041,"lat":32.43625},{"lng":112.321216,"lat":32.43549},{"lng":112.322844,"lat":32.435137},{"lng":112.322844,"lat":32.435137},{"lng":112.322534,"lat":32.434416},{"lng":112.322334,"lat":32.433945},{"lng":112.322184,"lat":32.433594},{"lng":112.321984,"lat":32.433123},{"lng":112.321864,"lat":32.432823},{"lng":112.321695,"lat":32.432432},{"lng":112.321675,"lat":32.432402},{"lng":112.321395,"lat":32.431731},{"lng":112.321145,"lat":32.431129},{"lng":112.321025,"lat":32.430889},{"lng":112.321025,"lat":32.430889},{"lng":112.321055,"lat":32.430629},{"lng":112.321045,"lat":32.430529},{"lng":112.320725,"lat":32.428517},{"lng":112.320495,"lat":32.427496},{"lng":112.320114,"lat":32.425573},{"lng":112.319914,"lat":32.424242},{"lng":112.319914,"lat":32.424242},{"lng":112.319743,"lat":32.422991},{"lng":112.319713,"lat":32.422771},{"lng":112.319543,"lat":32.421839},{"lng":112.319503,"lat":32.421279},{"lng":112.319503,"lat":32.421279},{"lng":112.319652,"lat":32.42127},{"lng":112.319682,"lat":32.42127},{"lng":112.321639,"lat":32.42116},{"lng":112.323108,"lat":32.421076},{"lng":112.323467,"lat":32.421057},{"lng":112.324716,"lat":32.420989},{"lng":112.325616,"lat":32.420941},{"lng":112.325866,"lat":32.420921},{"lng":112.326286,"lat":32.420891},{"lng":112.327006,"lat":32.420841},{"lng":112.327606,"lat":32.42079},{"lng":112.329307,"lat":32.420657},{"lng":112.333542,"lat":32.420308},{"lng":112.33704,"lat":32.42002},{"lng":112.337712,"lat":32.419964},{"lng":112.342698,"lat":32.419576},{"lng":112.347669,"lat":32.419163},{"lng":112.348653,"lat":32.419088},{"lng":112.351527,"lat":32.41884},{"lng":112.355014,"lat":32.41855},{"lng":112.356984,"lat":32.418395},{"lng":112.361145,"lat":32.418023},{"lng":112.365686,"lat":32.417648},{"lng":112.365937,"lat":32.417624},{"lng":112.368237,"lat":32.41742},{"lng":112.370245,"lat":32.417242},{"lng":112.372091,"lat":32.417068},{"lng":112.372292,"lat":32.417056},{"lng":112.375782,"lat":32.416648},{"lng":112.376264,"lat":32.416594},{"lng":112.377186,"lat":32.416486},{"lng":112.377186,"lat":32.416486},{"lng":112.377146,"lat":32.416176},{"lng":112.377095,"lat":32.415837},{"lng":112.376964,"lat":32.414867},{"lng":112.376964,"lat":32.414677},{"lng":112.377054,"lat":32.414186},{"lng":112.377184,"lat":32.413855},{"lng":112.377274,"lat":32.413704},{"lng":112.377424,"lat":32.413473},{"lng":112.377704,"lat":32.413171},{"lng":112.377975,"lat":32.412949},{"lng":112.378375,"lat":32.412716},{"lng":112.378485,"lat":32.412605},{"lng":112.378616,"lat":32.412564},{"lng":112.379337,"lat":32.412329},{"lng":112.380539,"lat":32.411971},{"lng":112.380829,"lat":32.41193},{"lng":112.381119,"lat":32.411848},{"lng":112.3816,"lat":32.411706},{"lng":112.38198,"lat":32.411594},{"lng":112.38198,"lat":32.411594},{"lng":112.382671,"lat":32.411392},{"lng":112.385042,"lat":32.410685},{"lng":112.385802,"lat":32.410505},{"lng":112.386362,"lat":32.410414},{"lng":112.388041,"lat":32.410235},{"lng":112.393126,"lat":32.409744},{"lng":112.393126,"lat":32.409744},{"lng":112.395311,"lat":32.409538},{"lng":112.398492,"lat":32.409237},{"lng":112.398632,"lat":32.409229},{"lng":112.401771,"lat":32.408945},{"lng":112.403674,"lat":32.40877},{"lng":112.404162,"lat":32.408737},{"lng":112.405217,"lat":32.408642},{"lng":112.405715,"lat":32.40859},{"lng":112.406631,"lat":32.408513},{"lng":112.410264,"lat":32.408192},{"lng":112.41108,"lat":32.408036},{"lng":112.411587,"lat":32.407894},{"lng":112.412223,"lat":32.407645},{"lng":112.412631,"lat":32.407442},{"lng":112.413029,"lat":32.407219},{"lng":112.413625,"lat":32.406789},{"lng":112.417751,"lat":32.403011},{"lng":112.41954,"lat":32.401372},{"lng":112.423258,"lat":32.397945},{"lng":112.424034,"lat":32.397258},{"lng":112.42476,"lat":32.39677},{"lng":112.425496,"lat":32.396401},{"lng":112.427029,"lat":32.395895},{"lng":112.427567,"lat":32.395733},{"lng":112.428542,"lat":32.395427},{"lng":112.428901,"lat":32.395322},{"lng":112.429498,"lat":32.39514},{"lng":112.430145,"lat":32.394939},{"lng":112.430345,"lat":32.394872},{"lng":112.432596,"lat":32.394179},{"lng":112.434968,"lat":32.393445},{"lng":112.439626,"lat":32.391953},{"lng":112.439706,"lat":32.391933},{"lng":112.440205,"lat":32.391766},{"lng":112.441383,"lat":32.391392},{"lng":112.442541,"lat":32.391017},{"lng":112.44343,"lat":32.390739},{"lng":112.44343,"lat":32.390739},{"lng":112.44369,"lat":32.39111},{"lng":112.44382,"lat":32.3913},{"lng":112.44432,"lat":32.392032},{"lng":112.44447,"lat":32.392242},{"lng":112.444931,"lat":32.392913},{"lng":112.445721,"lat":32.394044},{"lng":112.446362,"lat":32.394954},{"lng":112.446662,"lat":32.395384},{"lng":112.447333,"lat":32.396344},{"lng":112.450169,"lat":32.400389},{"lng":112.451843,"lat":32.402783},{"lng":112.452676,"lat":32.403949},{"lng":112.452786,"lat":32.404118},{"lng":112.452786,"lat":32.404118},{"lng":112.452946,"lat":32.404347},{"lng":112.452946,"lat":32.404347},{"lng":112.453619,"lat":32.405183},{"lng":112.45423,"lat":32.405819},{"lng":112.454882,"lat":32.406415},{"lng":112.455554,"lat":32.40694},{"lng":112.455795,"lat":32.407128},{"lng":112.45735,"lat":32.408364},{"lng":112.459147,"lat":32.409776},{"lng":112.460965,"lat":32.411216},{"lng":112.463807,"lat":32.413459},{"lng":112.465757,"lat":32.414982},{"lng":112.465837,"lat":32.415041},{"lng":112.466581,"lat":32.415619},{"lng":112.468883,"lat":32.417414},{"lng":112.470884,"lat":32.418981},{"lng":112.471175,"lat":32.419206},{"lng":112.47204,"lat":32.419872},{"lng":112.47371,"lat":32.421283},{"lng":112.475128,"lat":32.422699},{"lng":112.475188,"lat":32.422768},{"lng":112.47559,"lat":32.423221},{"lng":112.476405,"lat":32.424196},{"lng":112.477411,"lat":32.425419},{"lng":112.479573,"lat":32.428022},{"lng":112.480287,"lat":32.428879},{"lng":112.481413,"lat":32.43026},{"lng":112.483684,"lat":32.433102},{"lng":112.484127,"lat":32.433635},{"lng":112.486678,"lat":32.436775},{"lng":112.488646,"lat":32.439206},{"lng":112.490654,"lat":32.441659},{"lng":112.491617,"lat":32.442796},{"lng":112.492078,"lat":32.44343},{"lng":112.492439,"lat":32.444146},{"lng":112.49295,"lat":32.44525},{"lng":112.493221,"lat":32.445177},{"lng":112.494034,"lat":32.444928},{"lng":112.494175,"lat":32.444886},{"lng":112.496552,"lat":32.444163},{"lng":112.505896,"lat":32.441478},{"lng":112.506616,"lat":32.441268},{"lng":112.507536,"lat":32.441008},{"lng":112.515655,"lat":32.439135},{"lng":112.520611,"lat":32.438025},{"lng":112.524467,"lat":32.437186},{"lng":112.524835,"lat":32.437111},{"lng":112.52602,"lat":32.436848},{"lng":112.526518,"lat":32.436746},{"lng":112.527424,"lat":32.43683},{"lng":112.529076,"lat":32.436977},{"lng":112.529256,"lat":32.43564},{"lng":112.529246,"lat":32.435289},{"lng":112.529226,"lat":32.435109},{"lng":112.529962,"lat":32.434991},{"lng":112.530957,"lat":32.434898},{"lng":112.530838,"lat":32.434166},{"lng":112.530718,"lat":32.431144}]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10562.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10562.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10562.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Springboot+Vue項目-基于Java+MySQL的制造裝備物聯及生產管理ERP系統(附源碼+演示視頻+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;Java畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計 &…

Web自動化-日志收集

目標 1. 理解日志的相關概念 2. 掌握日志的基本用法 3. 掌握日志的高級用法 一、日志相關概念 目標 1. 了解日志的概念 2. 理解日志的作用 3. 掌握常見的日志級別 1. 日志 概念&#xff1a;日志就是用于記錄系統運行時的信息&#xff0c;對一個事件的記錄&#xff1b…

ffmpeg解析rtsp流獲取視頻的寬高

要使用FFmpeg來解析RTSP流并獲取視頻的寬度和高度,你可以使用avformat_find_stream_info函數來獲取流的信息,然后從AVStream結構體中讀取視頻的寬度和高度。以下是一個簡單的示例代碼: #include <libavformat/avformat.h> int main(int argc, char *argv[]) {AVForm…

ppt轉pdf的java實現

一、實現方式 java采用jacob包的功能&#xff0c;把ppt演示文稿轉換為pdf。 支持文件格式&#xff1a;pptx,ppt 二、事先準備 1、依賴于office&#xff0c;需安裝office辦公軟件 2、需要下載一個jacob-1.20-x64.dll的文件&#xff0c;放到java的bin目錄下。 文件可以網上搜…

電影網站|基于SSM+vue的電影網站系統(源碼+數據庫+文檔)

電影網站 目錄 基于SSMvue的電影網站系統 一、前言 二、系統設計 三、系統功能設計 1 系統功能模塊 2 管理員功能模塊 四、數據庫設計 五、核心代碼 六、論文參考 七、最新計算機畢設選題推薦 八、源碼獲取&#xff1a; 博主介紹&#xff1a;??大廠碼農|畢設布道…

Linux sliplogin命令教程:如何使用sliplogin命令建立SLIP服務器(附實例詳解和注意事項)

Linux sliplogin命令介紹 sliplogin&#xff08;Serial Line Internet Protocol Login&#xff09;命令用于將SLIP接口加入標準輸入&#xff0c;把一般終端機的連線變成SLIP連線。通常可用來建立SLIP服務器&#xff0c;讓遠端電腦以SLIP連線到服務器。 Linux sliplogin命令適…

貪心算法-----檸檬水找零

今日題目&#xff1a;leetcode860 題目鏈接&#xff1a;點擊跳轉題目 分析&#xff1a; 顧客只會給三種面值&#xff1a;5、10、20&#xff0c;先分類討論 當收到5美元時&#xff1a;不用找零&#xff0c;面值5張數1當收到10美元時&#xff1a;找零5美元&#xff0c;面值5張數…

未授權訪問:JBoss未授權訪問漏洞

目錄 1、漏洞原理? 2、環境搭建 3、未授權訪問 4、利用jboss.deployment getshell 防御手段 今天繼續學習各種未授權訪問的知識和相關的實操實驗&#xff0c;一共有好多篇&#xff0c;內容主要是參考先知社區的一位大佬的關于未授權訪問的好文章&#xff0c;還有其他大佬…

【Ubuntu 安裝erlang】

apt-get 安裝 apt-get install erlang或 源碼安裝 git clone https://github.com/erlang/otp.git cd otp git checkout maint-25 # current latest stable version ./configure make make install安裝完后&#xff0c;驗證是否成功 # 命令行輸入 erl

7.用戶、角色、菜單表SQL

用戶與角色是 多對多的關系&#xff1b; 角色與菜單權限 多對多的關系&#xff1b; 菜單權限表 create table acl_permission (id char(19) not null DEFAULT COMMENT 編號,pid CHAR(19) not null DEFAULT COMMENT 所屬上級,name VARCHAR(20) not NULL DEFAULT COMMENT …

C語言經典例題-7

1.計算三角形的周長和面積 題目描述&#xff1a; 根據給出的三角形3條邊a, b, c&#xff08;0 < a, b, c < 100,000&#xff09;&#xff0c;計算三角形的周長和面積。 輸入描述: 一行&#xff0c;三角形3條邊&#xff08;能構成三角形&#xff09;&#xff0c;中間用…

【ARM 嵌入式 C 入門及漸進 12.3 -- 將數值的第 s 位到 e 位清零】

請閱讀【嵌入式開發學習必備專欄】 文章目錄 將數值的第 s 位到 e 位清零 將數值的第 s 位到 e 位清零 為了定義一個VAL_CLR_BITS(val, s, n)宏&#xff0c;該宏將變量val的第s位到第n位清零&#xff08;假設n > s&#xff09;&#xff0c;其余位的值保持不變&#xff0c;我…

系統集成項目管理工程師第4章思維導圖發布

2024年開年&#xff0c;軟考系統集成項目管理工程師官方教程&#xff0c;迎來了闊別7年的大改版&#xff0c;改版之后的軟考中項考試&#xff0c;離同宗兄弟高項考試漸行漸遠。 中項第3版教程&#xff0c;僅僅從教程來看&#xff0c;其難度已經不亞于高級的信息系統項目管理師&…

數據結構與算法學習筆記三---循環隊列的表示和實現(C語言)

目錄 前言 1.為啥要使用循環隊列 2.隊列的順序表示和實現 1.定義 2.初始化 3.銷毀 4.清空 5.空隊列 6.隊列長度 7.獲取隊頭 8.入隊 9.出隊 10.遍歷隊列 11.完整代碼 前言 本篇博客介紹棧和隊列的表示和實現。 1.為啥要使用循環隊列 上篇文章中我們知道了順序隊列…

Hive Transaction事務表(含實現原理)

Hive Transaction事務表 在Hive中&#xff0c;事務表&#xff08;Transactional Tables&#xff09;允許用戶執行事務性操作&#xff0c;包括ACID&#xff08;原子性、一致性、隔離性、持久性&#xff09;特性。事務表是在Hive 0.14版本引入的&#xff0c;并且在后續版本中不斷…

LabVIEW天然氣壓縮因子軟件設計

LabVIEW天然氣壓縮因子軟件設計 項目背景 天然氣作為一種重要的能源&#xff0c;其壓縮因子的準確計算對于流量的計量和輸送過程的優化具有關鍵意義。傳統的計算方法不僅步驟繁瑣&#xff0c;而且難以滿足現場快速響應的需求。因此&#xff0c;開發一款既能保證計算精度又便于…

使用Pandas對Data列進行基于順序的分組排列

目錄 一、引言 二、Pandas庫簡介 三、按照數據列中元素出現的先后順序進行分組排列 四、案例分析 五、技術細節探討與擴展應用 1. 技術細節 2. 擴展應用 3. 示例代碼&#xff1a;用戶行為分析 4. 進階應用&#xff1a;分組后的聚合操作 5. 分組后的數據篩選 6. 分組…

【DevOps】Linux 安全:iptables 組成、命令及應用場景詳解

導讀&#xff1a;全面掌握 iptables&#xff1a;從基礎到實踐 在 Linux 系統中&#xff0c;iptables 是一個非常強大的工具&#xff0c;它不僅是系統管理員用來構建和管理網絡防火墻的首選工具&#xff0c;而且也是一個功能豐富的網絡流量處理系統。無論是進行包過濾、監控網絡…

學習筆記:【QC】Android Q qmi擴展nvReadItem/nvWriteItem

一、qmi初始化 流程圖 初始化流程: 1、主入口&#xff1a; vendor/qcom/proprietary/qcril-hal/qcrild/qcrild/rild.c int main(int argc, char **argv) { const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **); rilInit RIL_Init; funcs rilInit…

孩子通過編程可以收獲什么?

編程是一種高度創造性的活動&#xff0c;它可以幫助孩子們培養出許多有價值的技能和品質。通過學習編程&#xff0c;孩子們可以收獲以下幾點&#xff1a; 邏輯思維能力 編程是一種需要嚴密的邏輯思維和分析能力的活動。在編程過程中&#xff0c;孩子們需要理清思路&#xff0c;…