Как удалить маркеры Google Maps в API композиции Vue 3 (API JS Gmaps)

Я пытаюсь следовать документации карт Google Карты Google удаляют маркер, и я не могу удалить маркеры, как они говорят.

Я видел много сообщений об этом на различных сайтах, но безрезультатно. Карта открывается с уже размещенным маркером, и есть простая функция для удаления этого маркера. Когда я нажимаю кнопку, я не получаю ошибки, и маркер остается.

Мое единственное предположение заключается в том, что я неправильно обращаюсь к объекту маркера?

Использование Vue3, составного API, прямого API Google Maps JS, без дополнительных модулей

<script setup>
/* eslint-disable no-undef */
import { ref, onMounted, } from "vue";

import { Loader } from "@googlemaps/js-api-loader";

const GOOGLE_MAPS_API_KEY = import.meta.env.VITE_GAPI;

const loader = new Loader({ apiKey: GOOGLE_MAPS_API_KEY }); // load APIKEY

const mapDiv = ref(null); // define divref to populate the map

let map = ref(null); // map object

let markers = ref([]);


onMounted(async () => { //create map
  await loader.load();
  map.value = new google.maps.Map(mapDiv.value, {
    // center: currPos.value,
    center: { lat: 40, lng: -80 },
    zoom: 7,
  });

  const initialMarker = new google.maps.Marker({
    position: { lat: 40.785091, lng: -73.968285 },
    map: map.value,
    title: "PLEASE WORK SIR",
  });

  markers.value.push(initialMarker);
});

const removeMarker = () => {

  console.info('remove marker');
  
  for (var i = 0; i < markers.value.length; i++) {
    console.info('i', markers.value[i]);
    markers.value[i].setMap(null);
    markers.value = []
  }

};


</script>

<template>
  <div style = "overflow-y: hidden">
    <v-btn @click = "removeMarker">Delete all markers</v-btn>

    <div ref = "mapDiv" style = "width: 100%; height: 80vh"></div>
  </div>
</template>

Проверьте, сохраняется ли проблема, если вы не сделаете маркеры реактивными. У меня были проблемы с реактивными объектами Marker. Создание их реактивными нарушило некоторые функции в моем приложении, и это было исправлено, когда я удалил реактивность и использовал необработанные объекты маркера.

Tolbxela 21.04.2023 23:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение найдено здесь: https://stackoverflow.com/a/71874504/12020486

Vue 3 преобразовывал массив объектов Google в прокси-объекты.

Другие вопросы по теме