下午好,请告诉我谁知道,我现在正在学习将Google地图添加到该网站并使用this article进行操作。我按照指示执行了所有操作,但是该卡不起作用,请告诉我为什么?我在哪里弄错了? api键是正确的100%。 And I turn on the map in Google Cloud Platform。我使用简单的Vue cli Webpack。 My project on GitHub
index.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>google_map</title>
</head>
<body>
<div id="app"></div>
<script src="/dist/build.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=[MY_API_KEY]"></script>
</body>
</html>
组件Google.map:
<template>
<div class="google-map" :id="name"></div>
</template>
<script>
export default {
name: 'google-map',
props: ['name'],
data: function () {
return {
map: ''
}
},
computed: {
mapMarkers: function () {
return this.markers
}
},
mounted: function () {
const element = document.getElementById(this.name)
const options = {
zoom: 14,
center: new google.maps.LatLng(59.93, 30.32)
}
this.map = new google.maps.Map(element, options)
},
methods: {}
}
</script>
<style scoped>
.google-map {
width: 640px;
height: 480px;
margin: 0 auto;
background: gray;
}
</style>
App.vue代码:
<template>
<div class="container">
<google-map :name="name"></google-map>
</div>
</template>
<script>
import googleMap from './components/googleMap.vue'
export default {
data: function () {
return {
name: 'map',
}
},
mounted: function () {
},
components: {googleMap}
}
</script>
答案 0 :(得分:0)
在开始尝试使用GoogleMapsLoader
之前,请查看原始代码,您的错误非常简单;您试图在通过window.google
加载JS之前在已编译的JS中使用googleapis.com
。要解决此问题,只需在index.html中更改此内容即可:
<script src="/dist/build.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=[MY_API_KEY]"></script>
对此:
<script src="https://maps.googleapis.com/maps/api/js?key=[MY_API_KEY]"></script>
<script src="/dist/build.js"></script>
如果您想使用GoogleMapsLoader
,请遵循the documentation they provide;您应该将对Google Maps API的所有调用包装在加载程序调用的回调函数中。有很多不同的方法可以做到这一点,几乎可以肯定是一种更好的方法来建立全局实例,但是至少要使您的代码正常工作,这是您需要编写已挂载函数的代码:
mounted: function () {
GoogleMapsLoader.KEY = '[MY_API_KEY]';
GoogleMapsLoader.load(function(google){
const element = document.getElementById(this.name)
const options = {
zoom: 14,
center: new google.maps.LatLng(59.93, 30.32)
}
this.map = new google.maps.Map(element, options)
}.bind(this));
}