感谢您阅读我的问题:)
我正在尝试在我的 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>
)?
尝试像这样添加new:
map.value = new google.maps.Map(document.getElementById('map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
})
必须用id图指定div中的宽度和高度
<template>
<div class="map" id="map" style="width: 300px;height: 200px;" ></div>
</template>
如果不起作用,也尝试一下:
map.value = new window.google.maps.Map(document.getElementById('map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
});
安装后您可以尝试以下@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 },
});
})