Получить данные в Google Place без карты - программирование
Подтвердить что ты не робот

Получить данные в 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 получить только детали места без карты?

4b9b3361

Ответ 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));

в этом последнем случае вы получите массив мест вместо одного места. Надеюсь, что это поможет