繁体   English   中英

VueJS,ReferenceError:未定义谷歌

[英]VueJS, ReferenceError: google is not defined

我有以下源代码,当我尝试用google.maps ...实例化一个新的 var 时,我也遇到了以下错误:

谷歌'未定义

许多答案都谈到在其他所有事情之前异步加载 API 脚本,并且脚本的顺序很重要,但我认为这不是我的问题。

PS:我在main.js使用这个

Vue.use(VueGoogleMaps, {    
  load: {    
    key: 'MY-KEY',    
    libraries: 'places', //// If you need to use place input    
  },    
})     

谁能帮我? 谢谢。

<div class="map-container">     
       <gmap-map     
         id="map"     
         ref="map"     
         :center="center"     
         :zoom="15"     
         map-type-id="roadmap"     
         style="width:100%;  height: 400px;">     
           <gmap-marker     
           :key="index"    
            v-for="(m, index) in markers"    
            :position="m.position"    
             @click="center=m.position"    
             ></gmap-marker>    
                </gmap-map>
            </div>
<script>    
    import _ from 'lodash'    
    import { mapState } from 'vuex'    
    import * as VueGoogleMaps from 'vue2-google-maps'   

    export default {    
      computed: {    
        ...mapState([    
          'map',    
        ]),    
        mapStyle: function () {     
          const h = document.body.clientHeight - 80    
          return 'width: 100%; height: ' + h + 'px'    
        },    
        center: function () {    
          return { lat: 44.837938, lng: -0.579174 }    
        },    
      },    
      mounted: function () {    
        VueGoogleMaps.loaded.then(() => {
           var map = new google.maps.Map(document.getElementById('map'))    
        }
      }, 

由于您已将所有内容作为VueGoogleMaps导入, VueGoogleMaps我假设google位于此对象内。

编辑:似乎google对象被称为gmapApi

所以改变

var map = new google.maps.Map(document.getElementById('map'))   

let map = new VueGoogleMaps.gmapApi.maps.Map(document.getElementById('map'))   

由于您没有明确导入任何内容,因此它应该全部放在VueGoogleMaps 因此,如果您想将其命名为google ,请按照其他答案中的说明添加计算字段,但gmapApi应位于VueGoogleMaps

所以

computed: {
    google: VueGoogleMaps.gmapApi
}

你忘记了一个括号:

VueGoogleMaps.loaded.then(() => {
           var map = new google.maps.Map(document.getElementById('map'))    
        })

告诉我这是否有帮助。


同样来自NPM vue2-google-maps

如果您需要访问google对象:

 <template> <GmapMarker ref="myMarker" :position="google && new google.maps.LatLng(1.38, 103.8)" /> </template> <script> import {gmapApi} from 'vue2-google-maps' export default { computed: { google: gmapApi } } </script>

如果你得到“ maps of null ”,这意味着谷歌计算属性还没有准备好。

尝试这个:

computed: {
    google: VueGoogleMaps.gmapApi
}
...

在您等待 gmapApi 的方法中:

this.$gmapApiPromiseLazy().then(() => {
  //your code here
  //E.g. for directions
  var directionsService = new this.google.maps.DirectionsService();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM