vue中引入高德
        
            
            
            
        
        
            
研究
- 我们并不需要每个路由都使用到地图
- index.html全局引入- cdn会增加首屏加载速度
- 所以我们需要按需引入的一个方法
方案
| 12
 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 
| 12
 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来写。
 
        
    
    
        
    最后更新时间: