vue結(jié)合leaflet實(shí)現(xiàn)鷹眼圖
本文介紹了一個(gè)Web端使用Leaflet
開發(fā)庫(kù)顯示鷹眼圖的方法 (底圖來(lái)源:天地圖),該插件可設(shè)置鷹眼小地圖的大小、位置、收縮展示狀態(tài)。
開發(fā)環(huán)境
Vue開發(fā)庫(kù):3.2.37 & Leaflet開發(fā)庫(kù):1.9.3
Leaflet插件:leaflet-minimap
使用教程
安裝依賴庫(kù)
方法一: 通過(guò)npm安裝依賴
npm i leaflet-minimap
方法二: 通過(guò)github倉(cāng)庫(kù)下載,引入項(xiàng)目中(推薦)
leaflet-minimap官網(wǎng) https://github.com/Norkart/Leaflet-MiniMap
克隆leaflet-minimap倉(cāng)庫(kù),下載完畢后,進(jìn)入Leaflet-MiniMap文件夾,將dist目錄下的文件夾引入本地項(xiàng)目中。為什么推薦該方式引入呢?是因?yàn)樵摬寮谶M(jìn)行最小化和展示時(shí),鼠標(biāo)懸浮 hover效果會(huì)有個(gè)英文提示出現(xiàn),本地引入可以將英文提示語(yǔ)修改為中文,而不用去修改node_modules中的文件。
git clone https://github.com/Norkart/Leaflet-MiniMap
使用簡(jiǎn)介
// 定義一個(gè)底圖(注意:小地圖的layer不能和地圖上共用一個(gè),否則無(wú)法加載) const minilayer = L.tileLayer(`https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}`) // 使用小地圖,添加到地圖上 const miniMap = new L.Control.MiniMap(minilayer, { // 鷹眼圖配置項(xiàng),參數(shù)非必須,可以忽略使用默認(rèn)配置 width: 300, // 鷹眼圖寬度 height: 200, // 鷹眼圖高度 toggleDisplay: true, // 是否顯示最小化按鈕 minimized: false, // 是否最小化位置開始 }).addTo(map); // 改變鷹眼圖圖層源 // miniMap.changeLayer('新的layer'); // 移除鷹眼小地圖 // map.removeControl(miniMap);
以下是核心的參數(shù)配置項(xiàng),截圖于gitHub倉(cāng)庫(kù)(更新時(shí)間:2023年5月30日)
詳細(xì)源碼(Vue3)
<template> <div class="app-contain"> <!-- leaflet 地圖容器 --> <div id="myMap"></div> </div> </template> <script setup> // 引入樣式 import {onMounted} from 'vue' // 引入leaflet import L from 'leaflet'; import 'leaflet/dist/leaflet.css' // 小地圖 import "./store/Control.MiniMap.min.js"; import "./store/Control.MiniMap.min.css"; // 天地圖TK let tdtKey = 'YOURS_TK' const initMap = () => { // 影像地圖 const tiandituMap = L.tileLayer(`http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tdtKey}`) // 注記 const tiandituText = L.tileLayer(`http://t0.tianditu.gov.cn/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=${tdtKey}`) const layers = L.layerGroup([tiandituMap, tiandituText]) let map = L.map('myMap', { //需綁定地圖容器div的id center: [39.56, 116.20], //初始地圖中心 zoom: 10, //初始縮放等級(jí) maxZoom: 18, //最大縮放等級(jí) minZoom: 0, //最小縮放等級(jí) zoomControl: true, //縮放組件 attributionControl: false, //去掉右下角logol scrollWheelZoom: true, //默認(rèn)開啟鼠標(biāo)滾輪縮放 // 限制顯示地理范圍 maxBounds: L.latLngBounds(L.latLng(-90, -180), L.latLng(90, 180)), layers: [layers] // 圖層 }) /** 添加小地圖 */ // 定義一個(gè)底圖(注意:小地圖的layer不能和地圖上共用一個(gè),否則無(wú)法加載) const minilayer = L.tileLayer(`https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}`) // 使用小地圖,添加到地圖上 const miniMap = new L.Control.MiniMap(minilayer, { // 鷹眼圖配置項(xiàng),參數(shù)非必須,可以忽略使用默認(rèn)配置 width: 300, // 鷹眼圖寬度 height: 200, // 鷹眼圖高度 toggleDisplay: true, // 是否顯示最小化按鈕 minimized: false, // 是否最小化位置開始 }).addTo(map); // miniMap.changeLayer('新的layer'); // 移除小地圖 // map.removeControl(miniMap); } onMounted(() => { initMap() }) </script> <style scoped> #myMap { width: 86vw; height: 90vh; } </style>
到此這篇關(guān)于vue結(jié)合leaflet實(shí)現(xiàn)鷹眼圖的文章就介紹到這了,更多相關(guān)vue leaflet鷹眼圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ant-design-vue導(dǎo)航菜單a-menu的使用解讀
這篇文章主要介紹了ant-design-vue導(dǎo)航菜單a-menu的使用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue3使用v-if指令進(jìn)行條件渲染的實(shí)例代碼
條件渲染是根據(jù)條件的真假來(lái)有條件地渲染元素,在Vue.js 3.x中,常見(jiàn)的條件渲染包括使用v-if指令和v-show指令,本文講解使用v-if指令進(jìn)行條件渲染,需要的朋友可以參考下2024-03-03vue-cli項(xiàng)目如何使用vue-resource獲取本地的json數(shù)據(jù)(模擬服務(wù)端返回?cái)?shù)據(jù))
這篇文章主要介紹了vue-cli項(xiàng)目如何使用vue-resource獲取本地的json數(shù)據(jù)(模擬服務(wù)端返回?cái)?shù)據(jù)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Vue使用 onMounted 確保在組件掛載后執(zhí)行異步操作示例詳解
在 Vue.js 或其他類似框架中,使用 onMounted 是為了確保在組件掛載后執(zhí)行異步操作,這篇文章主要介紹了Vue使用onMounted確保在組件掛載后執(zhí)行異步操作,需要的朋友可以參考下2023-06-06vue實(shí)現(xiàn)子路由調(diào)用父路由的方法
這篇文章主要介紹了vue實(shí)現(xiàn)子路由調(diào)用父路由的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06vue-router之nuxt動(dòng)態(tài)路由設(shè)置的兩種方法小結(jié)
今天小編就為大家分享一篇vue-router之nuxt動(dòng)態(tài)路由設(shè)置的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09Vue+webpack項(xiàng)目基礎(chǔ)配置教程
這篇文章主要介紹了Vue+webpack項(xiàng)目基礎(chǔ)配置教程,需要的朋友可以參考下2018-02-02