Vue-Cli 3.0 中配置高德地圖


 vue 中使用高德地圖有兩種方式

 

一、vue-amap 組件

官網: https://elemefe.github.io/vue-amap/#/

開始的時候是打算用這個組件做地圖功能的,但是嘗試之后存在些問題,所以就放棄了,可能是我的使用方式不對。我所遇到的問題: 1. 安裝之后使用,始終提示跨域問題。 2. 頁面刷新之后地圖出不來,第一次進入頁面時沒問題。因為這兩個問題所以放棄了這個組件的使用。我想可能是我哪個地方代碼有問題。

 

二、直接引用高德地圖 SDK

因為第一種方式嘗試失敗了,所以我選擇了直接引用SDK的方式。使用這種方式沒有出現方式一中存在的問題。直接引用SDK的方式步驟:

1. 在 public 文件夾下的 index.html 中加入 

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.4&key=你申請的key"></script> 

 

2. 在 vue.config.js 文件中配置 externals

module.exports = {
  devServer: {
    port: 57103 // 端口號配置
  },
  configureWebpack: {
    externals: {
      'AMap': 'AMap' // 高德地圖配置
    }
  }
}

注: vue.config.js 文件要自己創建,vue-cli 3.0 不會自動生成此文件。 此外,修改 vue.config.js 不會觸發熱加載,也就是修改之后你需要重新 run 一下你的項目,它才能生效。

 

3. 實際使用

<template>
  <div class="box">
    <div id="container" style="width:500px; height:300px"></div>
  </div>
</template>

<script>
import AMap from 'AMap' // 引入高德地圖
export default {
  mounted () {
    this.init()
  },
  methods: {
    init () {
      let map = new AMap.Map('container', {
        center: [116.397428, 39.90923],
        resizeEnable: true,
        zoom: 10
      })
    }
  }
}
</script>

注:init() 方法請在 mounted 生命周期中調用,因為如果在 created 階段調用,會找不到 html 元素 div#container

 

4. 效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM