【Vue】请问如何在vuejs+webpack构建的项目中引入并使用高德地图API?
如题,请问如何在vuejs+webpack构建的项目中引入并使用高德地图API?
使用的官方的vue-cli
按照 aryu 提示的方法,现在的问题是import进来的AMap是undefined的,但在浏览器中API应该是加载进来了,但不知道为什么是undefined
externals: {'AMap': 'window.AMap'
}
将webpac.base.conf.js中的window去掉就正常了:
externals: {'AMap': 'AMap'
}
非常感谢 aryu 的帮助!
回答
先在index.html里添加高德的js sdk。
之后在build文件夹的webpack配置文件中,添加external,可以命名为'AMap',对象是'window.AMap'。之后在需要用到的组件里import AMap就可以正常使用了。
到公司用电脑了再补上一段配置代码吧:
在webpack.base.conf.js中,exports对象:
externals: { 'AMap': 'window.AMap'
}
例如我我在APP.vue中需要使用高德的JS SDK,就在APP.vue中:
import AMap from 'AMap'
index.html:
<!DOCTYPE html><html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>test</title>
</head>
<body>
<map></map>
<script src="http://webapi.amap.com/maps?v=1.3&key=yourkey"></script>
<!-- built files will be auto injected -->
</body>
</html>
main.js:
import Vue from 'vue'import Map from './components/Map'
/* eslint-disable no-new */
new Vue({
el: 'body',
components: { Map }
})
Map.vue:
<template> <div id="map-container"></div>
</template>
<style>
#map-container {
height: 600px;
width:500px;
}
</style>
<script>
import AMap from 'AMap'
console.log(AMap)
export default {
ready () {
const map = new AMap.Map('map-container', {
zoom: 15,
center: [116.39, 39.9]
})
console.log(map)
}
}
</script>
把API 封装成一个service(.js),在service中引入sdk(如果有的话)
把地图封装成组件(.vue),在组件中调用service,
使用window.AMap,import出来的是undefined,
而使用Amap,却AMap is not defined
vuejs有个vue-amap
高德地图
这个在Vue2.0里面会出现 Do not use built-in or reserved HTML elements as component id: Map 问题
参考这个 vue调用高德地图
调用成功之后,怎么在页面上conlose.log()出这个定位后的城市名呢
以上是 【Vue】请问如何在vuejs+webpack构建的项目中引入并使用高德地图API? 的全部内容, 来源链接: utcz.com/a/77677.html