Bootstrap

vue3.0引用原生高德地图进行定位

vue版本

项目用的是vue3.0的版本
搭建项目的过程省略

引入原生高德地图

1.根据官网要求先拿到需要的key
在这里插入图片描述
2.vue3.0的版本与2.0的版本存在差别,个别文件的位置也不相同
在我们项目一开始要加载的html页面(也就是index.html)插入下面的script链接
【注】vue3.0的index.html在public下
index.html

//这个key就是在高德地图中申请到的
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script> 

3.因为我在用的时候出现了这个问题(有的可能不出现,这个我也不知道为什么),按照官网给的api,会报错— AMap is not defined
所以需要在配置webpack的文件里添加一项设置,vue3.0默认没有webpack文件
新建vue.confing.js文件
【注】修改配置文件需要重新npm run serve才会生效
vue.congif.js文件
在这个文件中添加:

configureWebpack: {
    externals: {
    'AMap': 'AMap' // 高德地图配置
    }
  }

4.在我们需要定位的页面引入AMap

<script>
//!!!!!!!引入AMap!!!!!!
import AMap from 'AMap'
export default {
  mounted(){
    this.getPosition()
  },
  methods:{
    getPosition(){
      var map = new AMap.Map('container', {
        resizeEnable: true
      })
      map.plugin('AMap.Geolocation', function() {
        var geolocation = new AMap.Geolocation({
          // 是否使用高精度定位,默认:true
          enableHighAccuracy: true,
          // 设置定位超时时间,默认:无穷大
          timeout: 10000,
        })
        map.addControl(geolocation);
        geolocation.getCurrentPosition()
        AMap.event.addListener(geolocation, 'complete', onComplete)
        AMap.event.addListener(geolocation, 'error', onError)

        function onComplete (data) {
          console.log(data)
          // data是具体的定位信息
        }

        function onError () {
          // 定位出错
        }
      })
    }
  }
}
</script>

这样就不会报AMap找不到啦!
就酱!啾咪

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;