vue調用高德地圖攏共分三步
1.去高德開發者平台申請key; 2.安裝vue-amap; 3.使用組件調用地圖
2.vue安裝vue-amap
npm安裝
npm install vue-amap --save
CDN
目前可通過 unpkg.com/vue-amap 獲取最新版本的資源。
<script src="https://unpkg.com/vue-amap/dist/index.js"></script>
main.js引入vue-amap
// 引入vue-amap import AMap from 'vue-amap'; Vue.use(AMap); // 初始化vue-amap AMap.initAMapApiLoader({ // 高德的key key: 'YOUR_KEY', // 插件集合 (插件按需引入) plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'] });
3.組件里調用高德地圖
需要注意:<el-amap>一定要設置寬高,不然地圖不會顯示。或者給外面套一個div,給div設置寬高也行。
vue-amap官網:https://elemefe.github.io/vue-amap/#/
高德開放平台:http://lbs.amap.com/
vue高德地圖TypeError: v.w.uh is not a constructor錯誤
這是由於地圖實例是異步加載的當.vue文件開始加載地圖的時候地圖還沒完成初始化而獲取不到地圖實例造成的。
錯誤代碼
main.js(初始化地圖)
import Vue from 'vue' import VueAMap from 'vue-amap' Vue.use(VueAMap); VueAMap.initAMapApiLoader({ key: '3b576d3486dc84adc303919ebc399dba', plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch','AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.Geolocation','AMap.Geocoder', 'AMap.AMapManager', 'AMap.Marker'], v: '1.4.4'
.vue組件中(直接使用)
解決辦法:不在main.js中初始化地圖,而是在要使用地圖的組件中初始化地圖(並且是在vue實例之前初始化)
<script> import VueAMap from 'vue-amap' VueAMap.initAMapApiLoader({ key: '3b576d3486dc84adc303919ebc399dba', plugin: ['AMap.Autocomplete', 'AMap.PlaceSearch','AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.Geolocation','AMap.Geocoder', 'AMap.AMapManager', 'AMap.Marker'], v: '1.4.4' }); import n from '../assets/n' const exampleComponents = { props: ['text'], template: `<div>text from parent: {{text}}</div>` } export default {
具體高德地圖,獲取點擊點的經緯度,地圖加標記。參照項目 mosilingWEB