Vue-Cli 3.0 中配置高德地圖

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

 

1、vue-amap 組件html

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

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

 

2、直接引用高德地圖 SDKgit

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

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

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

 

2. 在 vue.config.js 文件中配置 externalsvue-cli

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

注: vue.config.js 文件要本身建立,vue-cli 3.0 不會自動生成此文件。 此外,修改 vue.config.js 不會觸發熱加載,也就是修改以後你須要從新 run 一下你的項目,它才能生效。api

 

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. 效果圖

相關文章
相關標籤/搜索