vue-router (1) 前端路由與後端路由
前端路由與後端路由介紹
前端路由與後端路由介紹
介紹常用的 map 方法
使用 layer group 切換圖層
指的是地圖應用的js框架,可以載入地圖資源並標記標示點等功能。
常見的如 leaflet。
指的是地圖資源的提供者,常見的有
Google Map (要收費)
OpenStreetMap (免費開源)
本文會講解如何使用 leaflet + OpenStreetMap 來開發地圖應用程式。
首先在專案裡用cdn的方式引入 leaflet 的 css 和 js
1  | <link rel="stylesheet" href="https://unpkg.com/leaflet@1.8.0/dist/leaflet.css"  | 
1  | <!-- Make sure you put this AFTER Leaflet's CSS -->  | 
準備一個放置地圖的元素,並設置高度
1  | <div id="map"></div>  | 
1  | #map { height: 180px; }  | 
在 js 裡載入框架
1  | const map = L.map('map').setView([51.505, -0.09], 13);  | 
L: 框架的縮寫
map(‘map’): 指定放地圖的元素
setView: 第一個參數指定地圖顯示的經緯度,第二參數表示地圖縮放的級距。
再來要載入圖資
1  | L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {  | 
tileLayer的第一個參數指定使用圖資的來源,第二個參數是物件,maxZoom代表最大縮放級距,attribution則標示圖資所有權。
最後用 addTo(map),將圖資載入map變數裡。
到這邊已經成功將地圖服務載入囉,範例程式碼。
圖資其實是一層一層的圖層疊起來呈現的

在最底層的地圖圖上,我們可以在加上標示的圖層。
1  | const marker = L.marker([51.5, -0.09]).addTo(map);  | 
使用marker方法加入標示,第一個參數帶入標示的經緯度,在加入map變數裡。
要在marker再加入標示說明,可用popup語法。
1  | marker.bindPopup("<b>Hello world!</b><br>I am a popup.").openPopup();  | 
要一次加入多個 marker ,可以跑迴圈加入
1  | var data = [  | 
要更改marker的icon的話,也有提供方法使用,主要將 iconUrl 替換成自己的icon圖片:
1  | var myIcon = L.icon({  | 
當今天資料很多時,為了避免依次顯示太多標示在地圖上,我們可以使用插件 Leaflet.markercluster。
這個插件可以依據縮放的級距顯示相對數量標示,避免顯示太多效能變差。
使用方法也很簡單,在原有的tileLayer圖層上再加上一層MarkerCluster圖層。
1  | var markers = new L.MarkerClusterGroup().addTo(map);;  | 
用watchEffect 監測資料
用watch 監測資料
用provide 傳遞資料
用ref取得dom元素
在setup裡使用emits
在setup裡使用props