vue實現(xiàn)離線地圖+leaflet+高德瓦片的詳細代碼
準備工作
1、我是通過leaflet和高德的瓦片實現(xiàn)的離線地圖
2、可以通過npm、CDN和直接下載zip包實現(xiàn)引入leaflet,附上leaflet中文網(wǎng)
3、高德的瓦片是找了很多帖子無意看到的一份合適的瓦片下載項目(忘了原帖在哪),不過這個項目是Java項目,是通過后端大哥幫忙下載的,附上項目原地址
4、地圖支持1-18層級縮放,全部下載的話文件量太大了(估算三千多萬個文件,幾十G存儲),我這邊只下載了1-12層級也比較清晰了(圖片資源需要放在public文件夾下)
開發(fā)代碼
1、HTML部分
<template> <div class="main"> <!-- 地圖 --> <div id="container"></div> </div> </template>
2、JS部分
<script> import icon from '@/assets/pointIcon.png' import '@/leaflet/leaflet.js' export default { name: 'CenterMap', props: { mapPointList: { type: Array, default: [] } }, mounted() { //地圖初始化 this.initMap(this.mapPointList) }, methods: { //DOM初始化完成進行地圖初始化 initMap(list) { // 設置iocn var myIcon = L.icon({ iconUrl: icon, //圖標 iconSize: [25, 34], //大小 iconAnchor: [12.5, 34] //偏移量 }) // 初始化地圖 var map = L.map('container').setView([28.697005, 115.885607], 8) // 瓦片圖層 L.tileLayer('/staticImg/{z}/{x}/{y}.png', { minZoom: 7, //最小縮小層級 maxZoom: 12, //最大放大層級 attribution: '<b style="color:#40a9ff">高德地圖</b>' //版權信息 }).addTo(map) // 通過數(shù)據(jù)標注icon if (list.length > 0) { list.forEach(v => { // 這里是緯度在前 【緯度,經(jīng)度】 var marker = L.marker(v.point, { icon: myIcon //icon }) .addTo(map) // Tooltip 工具提示 https://leafletjs.cn/reference.html#tooltip .bindTooltip(v.deviceName, { permanent: true, //是永久打開 Tooltip 還是只在鼠標移動時打開。 direction: 'bottom', //打開 Tooltip 的方向 offset: [0, 5], //Tooltip 位置的可選偏移 opacity: 1, //Tooltip 容器透明度 autoPlan: true //跟隨縮放變化 好像沒有起作用 }) marker.on('click', function(e) { L.popup({ offset: [0, -25] //popup 位置的可選偏移 }) .setLatLng(v.point) .setContent( `<p style='text-align:center'>${v.deviceName}</p> <p>設備編碼:${v.deviceCode}</p> <p>設備地址:${ v.address }</p> <p>設備狀態(tài):<span style="background-color:${v.state == 0 ? 'green' : 'red'};color: #fff; padding: 2px 4px;">${v.state == 0 ? '在線' : '離線'}</span></p>` ) .openOn(map) }) }) } }, // 父組件調用 接口更新地圖隨之更新 setMapData(list) { //地圖初始化 this.initMap(list) } } } </script>
3、css部分
<style lang="less" scoped> .main { width: 100%; height: 100%; } #container { padding: 0px; margin: 0px; width: 100%; height: 100%; } </style>
最后
我是下載的zip引入的leaflet,代碼整體寫的比較亂,可能會出現(xiàn)瑕疵,遇到問題請及時反饋
- 記得一定要引入leaflet.css文件,不然你的地圖會很瘋狂
- 記得一定要引入leaflet.css文件,不然你的地圖會很瘋狂
- 記得一定要引入leaflet.css文件,不然你的地圖會很瘋狂
到此這篇關于vue實現(xiàn)離線地圖+leaflet+高德瓦片的文章就介紹到這了,更多相關vue離線地圖+leaflet+高德瓦片內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
keep-Alive搭配vue-router實現(xiàn)緩存頁面效果的示例代碼
這篇文章主要介紹了keep-Alive搭配vue-router實現(xiàn)緩存頁面效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06Vue的v-model的幾種修飾符.lazy,.number和.trim的用法說明
這篇文章主要介紹了Vue的v-model的幾種修飾符.lazy,.number和.trim的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08