Vue.js GoogleMaps API 与 @googlemaps/js-api-loader

问题描述 投票:0回答:4

感谢您阅读我的问题:)

我正在尝试在我的 Vue.js 项目中实现 GoogleMaps 并使用 @googlemaps/js-api-loader (来自 https://developers.google.com/maps/documentation/javascript/overview#javascript

我的代码如下所示:

<script setup>
import { onMounted, ref } from 'vue'
import { Loader } from '@googlemaps/js-api-loader'

const loader = new Loader({
  apiKey: '',
  version: 'weekly',
  libraries: ['places']
})

const map = ref([])

onMounted(async () => {
  await loader
    .load()
    .then(google => {
      map.value = google.maps.Map(document.getElementById('map'), {
        center: { lat: -34.397, lng: 150.644 },
        zoom: 8
      })
    })
    .catch(error => {
      console.log(error)
    })
    .then(function () {
    // always executed
    })
})
</script>

<template>
  <div
    id="map"
    class="map"
  />
</template>

<style>
  html,
  body,
  #map {
    height: 100%;
    margin: 0;
    padding: 0;
  }
</style>

但是地图没有显示,只有弹出窗口,地图无法正确加载。 在控制台中出现此错误: 类型错误:this.set 不是一个函数。 (在 'this.set("renderingType","UNINITIALIZED")' 中,'this.set' 未定义) 有谁知道如何让它运行(最多在

<script setup>
)?

javascript vue.js google-maps-api-3
4个回答
2
投票

尝试像这样添加new

map.value = new google.maps.Map(document.getElementById('map'), {
        center: { lat: -34.397, lng: 150.644 },
        zoom: 8
      })

1
投票

必须用id图指定div中的宽度和高度

<template>
  <div class="map" id="map" style="width: 300px;height: 200px;" ></div>
</template>

0
投票

如果不起作用,也尝试一下:

map.value = new window.google.maps.Map(document.getElementById('map'), {
    center: { lat: -34.397, lng: 150.644 },
    zoom: 8
});

0
投票

安装后您可以尝试以下@googlemaps/js-api-loader

将其打包到您的 vuejs 应用程序中。

  <script setup>
    import { Loader } from "@googlemaps/js-api-loader";

    const {Map} = await loader.importLibrary("maps");

     onMounted(()=>{

        const map = new Map(document.getElementById("map"), {
            zoom: 4,
           center: { lat: -25.344, lng: 131.031 },
          });

    })
© www.soinside.com 2019 - 2024. All rights reserved.