#javascript #vue.js #google-maps #google-maps-api-3
Вопрос:
Мой проект Vue CLI использует API Google Maps для обработки местоположений, полученных от пользователя. Загрузчик импортируется следующим образом:
import { Loader } from "@googlemaps/js-api-loader";
И вот как он создается:
const loader = new Loader({
apiKey: "XXXXX",
version: "weekly",
libraries: ["places"]
});
У меня есть элемент ввода текста, который принимает местоположение от пользователя:
<input type="text" v-model="origin" id="origin" placeholder="Where are you?" />
Он использует класс автозаполнения Google Maps API для предложения или автоматического заполнения адресов (код находится в созданном объекте/опции экземпляра Vue).:
loader
.load()
.then(() => {
new window.google.maps.places.Autocomplete(
document.getElementById("origin"),
{
componentRestrictions: { country: "za" },
fields: ["address_components", "geometry", "icon", "name"],
}
);
});
Теперь, допустим, я хочу ввести адрес «Улица Манделы, 123, Какой-то пригород, 2021 год», и я набираю «123 млн», затем нажимаю на автоматически заполненный адрес, данные.у источника будет только «123 млн», а не полный адрес. Где я ошибаюсь?
Комментарии:
1. Прочитав еще раз руководство по автозаполнению мест, я нашел обходной путь. Я удалил привязку и добавил прослушиватель для события place_changed, и я отсортирован. По крайней мере, сейчас. Все же было бы интересно узнать, почему данные не передаются объекту данных.
Ответ №1:
В соответствии с приведенной здесь документацией Autocomplete
добавляет поле ввода текста на вашу веб-страницу и отслеживает в этом поле ввод символов. Таким образом, все, что пользователь вводит в ваше поле ввода текста, остается таковым и остается единственными данными, передаваемыми объекту данных при привязке.
Добавление обработчика для place_changed
события и formatted_address
поля в параметрах-это практический способ получения адреса, выбранного/добавленного пользователем.