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