之前我們提過用 leaflet.js 來取代 google maps製作互動地圖,這邊來用 vue 建立 web app,剛好有人弄好方便的工具 vue leaflet,測試一下還滿方便的,有興趣的可以用看看。
首先先安裝:
npm install leaflet vue2-leaflet --save
也可以選擇 cdn 的方式。
接著把 component import 進來:
import Vue from 'vue'; import { LMap, LTileLayer, LMarker } from 'vue2-leaflet'; import 'leaflet/dist/leaflet.css'; Vue.component('l-map', LMap); Vue.component('l-tile-layer', LTileLayer); Vue.component('l-marker', LMarker);
或是
import L from 'leaflet'; import { LMap, LTileLayer, LMarker } from 'vue2-leaflet'; export default { name: 'MyAwesomeMap', components: { LMap, LTileLayer, LMarker, }, };
css 的部分:
import 'leaflet/dist/leaflet.css';
接著讀入 component:
<l-map></l-map>
一些值可以透過 props 傳入,這下一篇再來講多一點
<l-map
ref="map"
:zoom="zoom"
:center="center"
:options="mapOptions"
style="height: 100vh"
></l-map>
如果想要存取原本 leaflet 的 api,可以在 component 上設定 ref 如下:
<l-map ref="myMap"></l-map>
接著在 vue 裡面就可以透過這個方式存取:
this.$refs.myMap.mapObject.ANY_LEAFLET_MAP_METHOD();