google-maps - 使用 vue 路由器从另一个组件加载谷歌地图
问题描述
我有一个关于谷歌地图加载的问题。事情是在#App 组件中读取谷歌地图组件,<router-view>
但通过这种方式它给出了错误:"ReferenceError: google is not defined"
。首先我以为我在里面遗漏了一些东西,initMap()
但没有,因为如果我尝试将地图方法粘贴到app.vue
然后运行的谷歌地图中没有问题。
顺便说一句,我的 api 在里面public/index.html
<script async defer src="https://maps.googleapis.com/maps/api/js?key=MY_API&callback=initMap"></script>
map.vue组件:
<template>
<div id="map" class="map"></div>
</template>
<script>
export default {
mounted(){
this.initMap();
},
methods: {
initMap(){
let options = {
center: {lat: 34.693725, lng: 135.502254},
zoom: 15,
mapTypeId: "roadmap"
};
let map = new google.maps.Map(document.getElementById("map"), options);
}
}
}
</script>
所以你认为问题是什么,我如何映射组件与<router-view>
解决方案
Vue Cookbook有一个加载 google maps 的示例,它使用google-maps-api-loader将加载过程包装到一个 Promise 中。来自加载器的承诺被await
编辑在mount
消费组件的钩子中。
这是一个演示该方法的代码框。
推荐阅读
- jquery - jQuery - 如何将 div 添加到列表中的特定位置到具有相同类的现有项目列表(追加)
- c# - 在 Web 表单中不必要地刷新 asp 图表 c#
- python - python 中的 split 方法是否返回了包含 \u 某些字符的内容以及如何摆脱它?
- unity3d - 无法在 Unity 中绘制流畅的线条
- android - 向微调器添加类似提示的行为
- html - 如何在 ngb-tabset 中以角度加载组件时获取活动选项卡名称?
- javascript - ASP.NET Core BundleMinifier 在缩小后删除异步修饰符
- reactjs - 如何显示 Firestore 日期时间
- arduino - 使用 sim900 arduino 向 Firebase 函数发送 POST 请求
- php - 为什么我在 phpspreadsheet 的 getCell() 方法中出现错误?