You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3中@googlemaps/js-api-loader加载AdvancedMarkerElement不显示问题

解决Nuxt3中Google Maps AdvancedMarkerElement不显示及加载警告问题

1. 消除"Google Maps already loaded outside @googlemaps/js-api-loader"警告

该警告源于Google Maps脚本被重复加载,按以下方式处理:

  • 检查nuxt.config.ts,移除app.head.scripts中手动引入的Google Maps <script>标签
  • 排查第三方插件/模块,确保没有自动引入Google Maps API
  • 配置Loader时明确指定版本、依赖库,并启用异步加载:
const loader = new Loader({
  apiKey: '你的API_KEY',
  version: 'weekly',
  libraries: ['marker'], // AdvancedMarkerElement依赖marker库
  async: true,
  defer: true
});

2. 修复AdvancedMarkerElement不显示问题

标记不显示多因API未加载完成或初始化逻辑错误,按以下步骤调整:

  • 等待API加载完成后再初始化地图和标记,借助loader.load()的Promise:
async function initMap() {
  await loader.load();
  
  const { Map } = google.maps;
  const { AdvancedMarkerElement } = google.maps.marker;

  // 初始化地图
  const map = new Map(document.getElementById('map'), {
    center: { lat: -34.397, lng: 150.644 },
    zoom: 8
  });

  // 创建自定义HTML标记
  const marker = new AdvancedMarkerElement({
    map: map,
    position: { lat: -34.397, lng: 150.644 },
    content: `<div style="padding:8px;background:#fff;border-radius:4px;border:1px solid #666;">自定义标记</div>`
  });
}
  • 在Nuxt3的onMounted钩子中触发初始化,确保DOM元素已挂载,且仅在客户端执行(适配SSR):
<script setup>
import { onMounted } from 'vue';
import { Loader } from '@googlemaps/js-api-loader';

const loader = new Loader({
  apiKey: '你的API_KEY',
  version: 'weekly',
  libraries: ['marker']
});

onMounted(async () => {
  if (process.client) {
    await initMap();
  }
});

async function initMap() {
  // 上述初始化逻辑
}
</script>

<template>
  <div id="map" style="width:100%;height:400px;"></div>
</template>

3. 额外检查项

  • 确认Google Cloud API密钥已启用Maps JavaScript API和Marker Library权限
  • 查看浏览器控制台,排查是否存在API密钥无效、DOM元素未找到等错误

内容的提问来源于stack exchange,提问作者moonris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:50:04