整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何在Spring Boot + Vue項目中集成和使用地圖API

          Spring Boot + Vue的項目中集成百度地圖API,并實現前后端數據交互,是一個常見的需求。以下是實現這一功能的詳細步驟,包括前端Vue的配置、百度地圖API的使用,以及后端Spring Boot的準備工作。

          前端部分(Vue)

          1. 選擇和引入百度地圖API

          百度地圖API可以通過在頁面中直接引入腳本的方式進行使用。

          2. 安裝和配置Vue項目

          如果你的Vue項目尚未搭建,可以通過以下命令創建一個新的Vue項目:

          vue create map-demo
          cd map-demo
          

          在項目中安裝axios,用于前后端交互:

          npm install axios
          

          3. 在Vue項目中引入百度地圖API



          在public/index.html中添加百度地圖的腳本引入:

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <meta charset="utf-8" />
              <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
              <meta name="viewport" content="width=device-width,initial-scale=1.0" />
              <title>map-demo</title>
              <!-- 引入百度地圖API -->
              <script src="https://api.map.baidu.com/api?v=3.0&ak=你的百度地圖API密鑰"></script>
            </head>
            <body>
              <noscript>
                <strong
                  >We're sorry but map-demo doesn't work properly without JavaScript
                  enabled. Please enable it to continue.</strong
                >
              </noscript>
              <div id="app"></div>
            </body>
          </html>
          

          4. 創建地圖組件


          在src目錄下創建一個components/Map.vue組件:

          <template>
            <div id="mapContainer" style="width: 100%; height: 500px;"></div>
          </template>
          
          <script>
          export default {
            name: 'Map',
            mounted() {
              this.initMap();
            },
            methods: {
              initMap() {
                // 創建地圖實例
                const map = new BMap.Map('mapContainer');
                const point = new BMap.Point(116.404, 39.915); // 設置初始點(北京天安門)
                map.centerAndZoom(point, 12); // 初始化地圖,設置中心點及縮放級別
                map.addControl(new BMap.NavigationControl()); // 添加放大縮小控件
                map.addControl(new BMap.MapTypeControl()); // 添加地圖類型控件
                map.enableScrollWheelZoom(true); // 啟用滾輪放大縮小
                
                // 添加標記
                const marker = new BMap.Marker(point);
                map.addOverlay(marker);
          
                // 信息窗口
                const infoWindow = new BMap.InfoWindow("<p>這是北京天安門</p>");
                marker.addEventListener("click", function() {
                  map.openInfoWindow(infoWindow, point);
                });
              }
            }
          }
          </script>
          
          <style>
            #mapContainer {
              width: 100%;
              height: 500px;
            }
          </style>
          

          5. 使用地圖組件

          在src/App.vue中引入和使用Map.vue組件:

          <template>
            <div id="app">
              <Map />
            </div>
          </template>
          
          <script>
          import Map from './components/Map.vue';
          
          export default {
            name: 'App',
            components: {
              Map
            }
          }
          </script>
          

          后端部分(Spring Boot)

          1. 創建Spring Boot項目

          可以使用Spring Initializr(https://start.spring.io/)或者通過IDE創建一個Spring Boot項目,選擇以下依賴項:

          • Spring Web
          • Spring Data JPA
          • MySQL Driver

          2. 配置數據庫連接

          在src/main/resources/application.properties中添加數據庫配置:

          spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase
          spring.datasource.username=root
          spring.datasource.password=yourpassword
          spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
          
          spring.jpa.hibernate.ddl-auto=update
          spring.jpa.show-sql=true
          spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
          

          3. 創建數據實體和倉庫

          創建一個實體類,例如Location:

          package com.example.mapdemo.entity;
          
          import javax.persistence.Entity;
          import javax.persistence.GeneratedValue;
          import javax.persistence.GenerationType;
          import javax.persistence.Id;
          
          @Entity
          public class Location {
              @Id
              @GeneratedValue(strategy = GenerationType.IDENTITY)
              private Long id;
              private String name;
              private double latitude;
              private double longitude;
          
              // getters and setters
          }
          

          創建一個倉庫接口:

          package com.example.mapdemo.repository;
          
          import com.example.mapdemo.entity.Location;
          import org.springframework.data.jpa.repository.JpaRepository;
          
          public interface LocationRepository extends JpaRepository<Location, Long> {
          }
          

          4. 創建控制器

          在com.example.mapdemo.controller包中創建一個控制器類:

          package com.example.mapdemo.controller;
          
          import com.example.mapdemo.entity.Location;
          import com.example.mapdemo.repository.LocationRepository;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.web.bind.annotation.*;
          
          import java.util.List;
          
          @RestController
          @RequestMapping("/api/locations")
          @CrossOrigin // 允許跨域請求
          public class LocationController {
              @Autowired
              private LocationRepository locationRepository;
          
              @GetMapping
              public List<Location> getAllLocations() {
                  return locationRepository.findAll();
              }
          
              @PostMapping
              public Location addLocation(@RequestBody Location location) {
                  return locationRepository.save(location);
              }
          }
          

          前后端交互

          前端通過axios與Spring Boot后端進行交互,例如在地圖上展示數據庫中的所有位置。

          1. 安裝和配置axios

          首先安裝axios:

          npm install axios
          

          在src/main.js中配置axios基礎URL:

          import Vue from 'vue';
          import App from './App.vue';
          import axios from 'axios';
          
          Vue.config.productionTip = false;
          
          axios.defaults.baseURL = 'http://localhost:8080/api';
          
          new Vue({
            render: h => h(App),
          }).$mount('#app');
          

          2. 修改地圖組件以顯示位置

          在Map.vue中,通過axios獲取位置數據并顯示在地圖上:

          <template>
            <div id="mapContainer" style="width: 100%; height: 500px;"></div>
          </template>
          
          <script>
          import axios from 'axios';
          
          export default {
            name: 'Map',
            mounted() {
              this.initMap();
              this.fetchLocations();
            },
            data() {
              return {
                map: null,
                markers: []
              };
            },
            methods: {
              initMap() {
                this.map = new BMap.Map('mapContainer');
                const point = new BMap.Point(116.404, 39.915);
                this.map.centerAndZoom(point, 12);
                this.map.addControl(new BMap.NavigationControl());
                this.map.addControl(new BMap.MapTypeControl());
                this.map.enableScrollWheelZoom(true);
              },
              fetchLocations() {
                axios.get('/locations')
                  .then(response => {
                    const locations = response.data;
                    locations.forEach(location => {
                      const point = new BMap.Point(location.longitude, location.latitude);
                      const marker = new BMap.Marker(point);
                      this.map.addOverlay(marker);
                      this.markers.push(marker);
          
                      const infoWindow = new BMap.InfoWindow(`<p>${location.name}</p>`);
                      marker.addEventListener('click', () => {
                        this.map.openInfoWindow(infoWindow, point);
                      });
                    });
                  })
                  .catch(error => {
                    console.error("There was an error fetching the locations!", error);
                  });
              }
            }
          }
          </script>
          
          <style>
            #mapContainer {
              width: 100%;
              height: 500px;
            }
          </style>
          

          測試

          1. 啟動后端Spring Boot應用,確保它在8080端口運行,并且可以訪問數據庫。
          2. 啟動前端Vue應用。
          3. 打開瀏覽器,訪問http://localhost:8080,你應該會看到地圖,并且地圖上標記了數據庫中的位置。

          總結

          通過上述步驟,你可以在Spring Boot + Vue項目中集成百度地圖API,并通過后端提供的API顯示和管理地圖上的位置數據。這種前后端分離的開發模式,可以提高開發效率和代碼的可維護性。

          們在網站建好后,關鍵詞也做完了,我們還需要做網站地圖sitemap,網站地圖是干嘛的呢,主要有兩個作用,一個是給用戶看,另一種是給搜索引擎看,格式分別是html和xml。

          網站地圖

          今天主要講什么xml網站地圖怎么做,需要注意什么問題,現在網上有很多的網站地圖制作生成的,網站地圖主要就是列出網站所有要被搜索引擎收錄的鏈接。

          舉例

          <?xml version="1.0" encoding="UTF-8"?> //文件必須是utf8編碼

          <urlset>

          <url>

          <loc>http://*******</loc> //你的域名

          <lastmod>2021-05-24</lastmod> //發布時間

          <changefreq>daily</changefreq> // 告訴搜索引擎更新周期

          <priority>1.0</priority> //優先級

          </url>

          </urlset>

          網站地圖標簽都有哪些意思呢

          urlset:聲明文件所使用的Sitemap協議版本,是必須要的標簽

          url:是它下面所有網址的母標簽,是必須要的標簽

          loc:列出頁面完整的url,是必須要的標簽

          lastmod:表示頁面最后一次更新時間,此標簽可選。

          priority:可選標簽,表示鏈接的相對重要程度

          changefreq:代表文件的更新頻率,是可選標簽。可以有以下值:

          changefreq標簽值

          always:表示一直變動,指每次訪問頁面內容都不同

          hourly:每小時

          daily:每天

          weekly:每周

          monthly:每月

          yearly:每年

          never:從不改變

          需要注意的是這個設置的更新頻率是告訴搜索引擎你的更新時間,但不代表搜索引擎每天都會來抓取你的鏈接,所以百度站長里面也會有一項主動提交鏈接的入口,建議站長每天都把新的鏈接主動提交給搜索引擎,xml網站地圖最多可以列出5萬個URL,并且文件不能太大,對于新站的話,一個文件是足夠的,老站的話鏈接也很多,也可以分成多個網站地圖提交。

          現在網上有很多地圖生成器,而且有的網站系統也是有很多的插件可以下載。#網站地圖#

          文由ScriptEcho平臺提供技術支持

          項目地址:傳送門

          Vue 中使用 InMap 創建動態軌跡地圖

          應用場景介紹

          動態軌跡地圖廣泛應用于物流追蹤、車輛管理、人員定位等場景,可直觀展示移動對象的歷史軌跡和實時位置。本代碼示例展示了如何使用 Vue 框架和 InMap 庫創建一個動態軌跡地圖,實現軌跡展示、實時更新和交互功能。

          代碼基本功能介紹

          該代碼的主要功能包括:

          • 加載 InMap 庫并創建地圖實例
          • 從外部數據源加載軌跡數據
          • 創建軌跡線覆蓋物并添加到地圖
          • 設置軌跡線樣式和交互事件
          • 實時更新軌跡數據,反映移動對象的最新位置

          功能實現步驟及關鍵代碼分析

          1. 加載 InMap 庫和創建地圖實例

          onMounted(async () => {
            let jsUrls = [
              'https://api.map.baidu.com/getscript?v=2.0&ak=cxtWZ9zGiLlLdQwBSuGGwpanwqfaLvEc&services=&t=20240108120844',
              'https://registry.npmmirror.com/inmap/2.3.3/files/dist/inmap.min.js',
            ]
            await Promise.all(jsUrls.map((js) => loadJavascript(js)))
          
          

          var map = new inMap.Map({
          id: 'allmap',
          skin: 'Blueness',
          center: [-22.053354, 27.353393],
          zoom: {
          value: 3,
          show: true,
          max: 22,
          min: 3,
          },
          })
          })

          此代碼塊負責加載 InMap 庫和創建地圖實例。首先,異步加載必要的 JavaScript 文件。然后,使用 inMap.Map 構造函數創建地圖實例,并指定地圖容器 ID、皮膚、中心點和縮放級別等參數。

          2. 加載軌跡數據

          var overlay = new inMap.LineStringOverlay({
            data: data.map(function (item, index) {
              item.name = '軌跡' + index
              item.count = index
              return item
            }),
          })
          

          此代碼塊加載外部軌跡數據并將其添加到地圖中。它使用 inMap.LineStringOverlay 構造函數創建一個軌跡線覆蓋物,并傳入軌跡數據。軌跡數據以數組形式提供,每個元素包含軌跡點的經度、緯度和時間戳等信息。

          3. 設置軌跡線樣式和交互事件

          overlay.setStyle({
            normal: {
              borderColor: 'rgba(255, 250, 50, 0.3)',
              borderWidth: 0.7,
              shadowColor: 'rgba(255, 250, 50, 1)',
              shadowBlur: 20,
            },
          })
          

          此代碼塊設置軌跡線的樣式,包括邊框顏色、寬度、陰影顏色和模糊度。

          overlay.setEvent({
            onState(state) {
              console.log(state)
            },
          })
          

          此代碼塊設置軌跡線的交互事件。當用戶懸停、單擊或拖動軌跡線時,會觸發 onState 事件,并將當前狀態輸出到控制臺。

          4. 實時更新軌跡數據

          // 假設您有實時更新軌跡數據的邏輯
          // 在此示例中,我們模擬通過 WebSocket 接收數據
          let socket = new WebSocket('ws://localhost:8080')
          socket.onmessage = (event) => {
            let newData = JSON.parse(event.data)
            overlay.setData(newData)
          }
          

          此代碼塊演示了如何實時更新軌跡數據。它模擬了一個 WebSocket 連接,用于接收更新后的軌跡數據。當收到新數據時,它會使用 setData 方法更新軌跡線覆蓋物的軌跡數據。

          總結與展望

          開發這段代碼的過程讓我深入了解了 Vue 中使用 InMap 創建動態軌跡地圖的技術。通過分析關鍵代碼,我掌握了加載 InMap 庫、創建地圖實例、加載軌跡數據、設置軌跡線樣式和交互事件以及實時更新軌跡數據的步驟。

          未來,該卡片功能可以進一步拓展和優化,例如:

          • 集成更多數據源,支持從多種來源加載軌跡數據
          • 優化數據處理和更新算法,提高實時性的同時降低內存消耗
          • 添加更多交互功能,例如軌跡回放、軌跡分析和導出
          • 更多組件:

          獲取更多Echos

          本文由ScriptEcho平臺提供技術支持

          項目地址:傳送門

          微信搜索ScriptEcho了解更多


          主站蜘蛛池模板: 国产伦一区二区三区高清| 夜夜精品无码一区二区三区| 卡通动漫中文字幕第一区| 日本一区二区高清不卡| 日本一区二区三区在线视频| 精品一区二区三区高清免费观看| 亚洲成人一区二区| 夜夜嗨AV一区二区三区| 国产伦精品一区二区三区女| 动漫精品一区二区三区3d| 久久综合一区二区无码| 亚洲国产视频一区| 国产激情精品一区二区三区 | 国产一区二区视频在线播放| 国产福利一区二区三区在线视频 | 成人在线视频一区| 一区二区三区日韩| 波多野结衣中文一区| 亚洲一区二区三区免费视频| 免费人人潮人人爽一区二区| 国产在线一区二区三区| 日韩精品一区二区三区毛片 | 波多野结衣中文字幕一区| 国产激情无码一区二区| 国产一区二区视频免费| 好看的电影网站亚洲一区| 青娱乐国产官网极品一区| 国产成人久久精品区一区二区| 国产免费一区二区三区免费视频| 亚洲欧美日韩中文字幕在线一区 | 国产成人亚洲综合一区| 国产剧情国产精品一区| 久久99国产一区二区三区| 一区二区三区四区在线播放| 欧美一区内射最近更新| 日本国产一区二区三区在线观看| 无码国产精成人午夜视频一区二区| 一区二区三区四区视频在线| 精品国产一区在线观看 | 一区二区三区福利| 国产精品成人国产乱一区|