为什么Google地图在该网站上不起作用?

时间:2019-06-22 16:18:06

标签: javascript html css google-maps vue.js

下午好,请告诉我谁知道,我现在正在学习将Google地图添加到该网站并使用this article进行操作。我按照指示执行了所有操作,但是该卡不起作用,请告诉我为什么?我在哪里弄错了? api键是正确的100%。 And I turn on the map in Google Cloud Platform。我使用简单的Vue cli Webpack。 My project on GitHub

Screenshot of a broken map

Console Error

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>

1 个答案:

答案 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));
}