Получить данные в Google Place без карты
У меня есть ссылка на Google Place и я использую Javascript API для получения информации о месте.
Он отлично работает, пока на странице есть карта.
Но если нет карты - я хочу только детали места - она ломается, потому что переменная карта не определена.
documentation указывает:
"Детали места запрашиваются с вызовом метода getDetails() службы.
service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);
Если я не использую переменную map, я получаю: "Uncaught TypeError: Не могу прочитать свойство" innerHTML "undefined"
Я могу сделать серверный запрос, но есть ограничение на количество раз, когда вы можете это сделать.
Есть ли способ в Javascript получить только детали места без карты?
Ответы
Ответ 1
После небольшого использования этого решения я решил создать новый объект карты, не добавляя его в документ. API, похоже, с этим хорошо.
let map = new google.maps.Map(document.createElement('div'));
Затем сделайте свой запрос, как и раньше, с помощью фиктивной карты obj.
this.googlePlaces = new google.maps.places.PlacesService(map);
this.googlePlaces.getDetails(request, callback);
Ответ 2
Карта не требуется, вы можете использовать места api с любым выбранным вами селектором, если ваша идея состоит в том, чтобы получить конкретное место, используйте
Автозаполнение
var options = {
types: ["(cities)"]
}
this.autocompletePlaces = new google.maps.places.Autocomplete(document.getElementById('txtPlaces'),options);
google.maps.event.addListener(this.autocompletePlaces, 'place_changed',function(){
var place = this.autocompletePlaces.getPlace();
var address = this.autocompletePlaces.formatted_address;
});
Если вы ищете список мест с поисковым термином, используйте
this.autocompletePlaces = new google.maps.places.SearchBox(document.getElementById('txtPlaces'),options);
this.autocompletePlaces.addListener('places_changed', this.attachSelectedPlace.bind(self));
в этом последнем случае вы получите массив мест вместо одного места.
Надеюсь, что это поможет