vue中引入高德
研究
- 我们并不需要每个路由都使用到地图
index.html
全局引入cdn
会增加首屏加载速度
- 所以我们需要按需引入的一个方法
方案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| let amapKey = '你申请的key' let amapVersion = '1.4.15' let _createScript = (url) => { var tmp = document.createElement('script') tmp.charset = 'utf-8' tmp.src = url document.head.appendChild(tmp) }
export default () => { return new Promise((resolve, reject) => { if (!window.AMap) { _createScript(`//webapi.amap.com/maps?v=${amapVersion}&key=${amapKey}.Key&callback=aMapInitCallback`) window.aMapInitCallback = () => { _createScript('//webapi.amap.com/ui/1.0/main.js?v=1.0.11&callback=amapUiCallback') let interval = setInterval(() => { if (window.AMapUI) { clearInterval(interval) resolve(window.AMap) } }, 50) } } else resolve(window.AMap) }) }
|
在路由内的使用
html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <template> <div class="p-map"> <div id="mapContainer">
</div> </div> </template> ``` ```javascript import MapLoader from "../../../../utils/amap";//引入刚刚新建的amap.js methods: { loadMap() { const _this = this MapLoader().then(AMap => { console.log('地图加载成功') this.map = new AMap.Map('mapContainer', { center: [117.000923, 36.675807], zoom: 6 }) //map初始化插件 AMap.plugin(['AMap.ToolBar'],function(){ _this.map.addControl(new AMap.ToolBar()); }) }, e => { console.log('地图加载失败' ,e) }) }, }
|
- 这样就成功了。这样的话
api
需要看原生的高德api
来写。
最后更新时间: