Leaflet 筆記四(續(xù)):Vue-Leaflet2.0

Leaflet 筆記四(續(xù)):Vue-Leaflet2.0

vue組件化三部曲:

前言

github源碼在此,記得點(diǎn)星:
https://github.com/brandonxiang/vueleaflet

在2016年4月30日,我剛接觸vue1.0。那時(shí)候,我對(duì)vue還不是很了解。在 react-leaflet的一個(gè)啟發(fā)下,想將leaflet.js進(jìn)行vue的組件化。受限于我對(duì)vue的理解并不夠深入以及空余時(shí)間不多,vue-leaflet1.0版本功能并不完善。

快到了2017年4月,隨著vue的版本更替到了2.0以及l(fā)eaflet的版本進(jìn)入1.0,我決定把它重寫。運(yùn)用更多的新語(yǔ)法特性,并考慮引入vuex進(jìn)行數(shù)據(jù)流管理。大部分map的SPA是以一個(gè)地圖控件作為主要的交互控件。我覺(jué)得用vuex進(jìn)行數(shù)據(jù)管理和事件管理再合適不過(guò)。

在寫vue-leaflet這一年中,有位外國(guó)哥們寫了vue2leaflet,他的寫法非常有新意。也激發(fā)了我的新嘗試。

結(jié)構(gòu)

vuex是用于裝載map,所有與map交互的函數(shù)都會(huì)保存在mutations中。正式由于vue2減少對(duì)事件觸發(fā)機(jī)制的推崇,逐漸轉(zhuǎn)向用vuex作為數(shù)據(jù)管理中心。

Tooltip和Popup則會(huì)與父組件Marker直接進(jìn)行交互。

已完成組建

  • Map
  • Marker
  • Popup
  • Tooltip
  • TileLayer

安裝

該庫(kù)已經(jīng)發(fā)布至npm。

npm install vueleaflet -save

上手

你可以編寫如下Vue-styled的組件來(lái)使用,就像Layout.vue.

<l-map :zoom="zoom" :center="center" :min-zoom="minZoom" :max-zoom="maxZoom">
  <l-tilelayer :url="url" :attribution="attribution"></l-tilelayer>
  <l-marker :position="center" :title="title" :opacity="opacity" :draggable="draggable">
    <l-tooltip content="a tooltip"></l-tooltip>
  </l-marker>
  <l-marker :position="marker" :title="title" :opacity="opacity" :draggable="false">
    <l-popup content="a popup"></l-popup>
  </l-marker>
</l-map>

在這之前,你還需要配置一下插件安裝。插件安裝的過(guò)程中,就幫你自動(dòng)注冊(cè)了組件。你可能需要了解一下vuex的多modules機(jī)制??梢詫⒛愕腶pp的module和VueLeaflet的module分開(kāi)裝進(jìn)同一個(gè)store里面。

import Vue from 'vue';
import Vuex from 'vuex';
import VueLeaflet from './index'
import App from './Layout';

Vue.use(Vuex);

const store = new Vuex.Store({
  modules:{
    VL: VueLeaflet.store,
  }
});

Vue.use(VueLeaflet.plugin,store);

new Vue({
  el: '#app',
  store,
  template: '<App/>',
  components: { App },
});

開(kāi)發(fā)

該庫(kù)來(lái)自vue-cli的初始化。開(kāi)發(fā)流程操作也相對(duì)簡(jiǎn)單。

# 安裝依賴
npm install

# 用 hot reload 進(jìn)行調(diào)試
npm run dev

# 生產(chǎn)壓縮文件
npm run build

轉(zhuǎn)載,請(qǐng)表明出處。總目錄Awesome GIS

微信公眾號(hào)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容