背景:引入cdn直接调用提示undefined
原因:因为你没有在vue.confing注册,然后重新运行项目

正确做法:
1.
如果是vue.config.js的项目就在public/index.html 里面的body里面引入cdn
如果是vite.config.ts/js的项目就在项目的最外层的index.html里面引入cdn

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=你自己申请的key"></script>

在这里插入图片描述
2.
方法一:在vue.config.js里面配置cdn


module.exports = {
  configureWebpack: {
    externals: {
      AMap: 'AMap'
    }
  }
}

方法二:如果是vite.config.js 里面,需要安装插件

npm i -D vite-plugin-resolve-externals
import resolveExternalsPlugin from 'vite-plugin-resolve-externals'

export default defineConfig({
	plugins: [
	    resolveExternalsPlugin({
	      Amap: Amp 
	    })
  ]
})

方法三:如果你想直接使用也可以
直接打印window,先看看window对象有没有挂载AMap,如果有,直接调用

console.log(window)
const AMap = window.AMap
console.log(AMap)

3.在需要的vue文件里面调用

<section class="map" id="map"></section>

import AMap from 'AMap'
import { reactive } from 'vue'
const gaodeAMap = () => {
  //创建地图示例
  let map = new AMap.Map('map', {
    center: [114.298572, 30.584355],
    zoom: 10.2
    // showLabel: false, //不显示地图文字标记
  })
  map.setCity('武汉市') //初始化显示的区域
  var styleName = 'amap://styles/' + 'normal' //底部颜色
  map.setMapStyle(styleName) //极夜蓝
  //标记一个点 可以去掉
  var marker = new AMap.Marker({
    position: new AMap.LngLat(114.298572, 30.584355),
    title: '武汉'
  })
  map.add(marker)
}
onMounted(() => {
  gaodeAMap()
})

4.重新运行项目,成功
在这里插入图片描述

Logo

前往低代码交流专区

更多推荐