vue基于Vue2.0和高德地圖的地圖組件實例
前言
在做基于LBS的應用中,時常會和地圖打交道,最直接的解決方案,當然是去對應的地圖官網(wǎng)找文檔,然后一步步來玩。對于簡單場景而言,體驗應該還好,但對于一些狀態(tài)多,變化頻繁的復雜場景而言,不僅要時刻維護本地數(shù)據(jù)狀態(tài)和地圖狀態(tài)同步,還要查找設置各種狀態(tài)的地圖API,實在是讓人頭疼的事情。
設計vue-amap的初衷,也就是為了讓開發(fā)者,在編寫地圖應用時,能從查找眾多地圖API和繁瑣的地圖狀態(tài)同步中解脫出來。
那么vue-amap是如何做到的,又能給開發(fā)者帶來怎樣的便利與開發(fā)體驗呢?我們就從一個輕點的栗子講起。
產(chǎn)品經(jīng)理說,咱們要搞個地圖,上面給我放N個人,我要時刻知道他們的位置。
安裝
npm install vue-amap --save
引入vue-amap
vue-amap的引入方式很簡單,在入口文件中加入下面內(nèi)容
// 引入vue-amap
import AMap from 'vue-amap';
Vue.use(AMap);
// 初始化vue-amap
AMap.initAMapApiLoader({
// 申請的高德key
key: 'YOUR_KEY',
// 插件集合
plugin: ['']
});
顯示地圖
在模版中加入vue-amap的地圖組件
<el-amap vid="amapDemo"> </el-amap>
給地圖加入N個人
在模版中加入vue-amap的地圖組件
<template>
<el-amap vid="amapDemo">
// 添加N個人
<el-amap-marker v-for="marker in markers" :position="marker.position">
</el-amap-marker>
</el-amap>
</template>
<script>
export default {
data() {
return {
markers: []
};
},
mounted() {
// 姑且N為2
// 這樣地圖上就添加了兩個人
this.markers = [
{
position: [121.5273285, 31.21515044]
}, {
position: [121.5273286, 31.21515045]
}
];
}
};
</script>
讓N個人動起來
之前我們已經(jīng)將N個人放上去了,關鍵的時候來了,我們?nèi)绾胃碌貓D狀態(tài)呢?vue-amap支持數(shù)據(jù)的單向綁定,直接更新本地數(shù)據(jù)狀態(tài)即可同步地圖顯示狀態(tài)。
<template>
<el-amap vid="amapDemo">
<el-amap-marker v-for="marker in markers" :position="marker.position">
</el-amap-marker>
</el-amap>
</template>
<script>
export default {
data() {
return {
markers: []
};
},
mounted() {
// 姑且N為2
// 為地圖添加兩個人
this.markers = [
{
position: [121.5273285, 31.21515044]
}, {
position: [121.5273286, 31.21515045]
}
];
// 模擬實時更新位置
// 開啟一個1s的輪訓,每個人的經(jīng)緯度都自增0.00001
const step = 0.00001;
setInterval(() => {
this.markers.forEach((marker) => {
marker.position = [marker.position[0] + step, marker.position[1] + step];
});
}, 1000);
}
};
</script>
一個簡單的基于vue-amap的地圖應用就完成了,有沒有覺得方便很多,我們只要維護好自己本地的數(shù)據(jù)狀態(tài)即可,將具體地圖的API,以及本地數(shù)據(jù)集和地圖狀態(tài)同步問題交給vue-amap負責就好了。
我們會持續(xù)維護這個項目,同時也希望vue-amap能給更多開發(fā)者帶來開發(fā)效率的提高以及體驗上的舒適。
Github:vue-amap
demo完成下載地址:vue-amap_jb51.rar
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Vue數(shù)據(jù)監(jiān)聽方法watch的使用
這篇文章主要介紹了Vue數(shù)據(jù)監(jiān)聽方法watch的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
vue+canvas如何實現(xiàn)根據(jù)數(shù)據(jù)展示不同高度,不同漸變顏色的長方體效果
這篇文章主要介紹了vue+canvas如何實現(xiàn)根據(jù)數(shù)據(jù)展示不同高度,不同漸變顏色的長方體效果,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09
vue 監(jiān)聽是否切屏和開啟小窗的實現(xiàn)過程
這篇文章主要介紹了vue 監(jiān)聽是否切屏和開啟小窗的過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
詳解vuejs2.0 select 動態(tài)綁定下拉框支持多選
這篇文章主要介紹了vuejs2.0 select動態(tài)綁定下拉框 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
Vue路由跳轉(zhuǎn)與接收參數(shù)的實現(xiàn)方式
這篇文章主要介紹了Vue路由跳轉(zhuǎn)與接收參數(shù)的實現(xiàn)方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
vue?watch報錯:Error?in?callback?for?watcher?"xxx&qu
這篇文章主要給大家介紹了關于vue?watch報錯:Error?in?callback?for?watcher?“xxx“:“TypeError:Cannot?read?properties?of?undefined的解決方法,需要的朋友可以參考下2023-03-03
vue?長列表數(shù)據(jù)刷新的實現(xiàn)及思考
這篇文章主要為大家介紹了vue?長列表數(shù)據(jù)刷新的實現(xiàn)及思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04

