Как перебрать дополнительные страницы, используя Google Места и JavaScript API? - PullRequest
0 голосов
/ 12 июня 2018

Я создаю одностраничное приложение и использую API-интерфейс javascript для доступа к картам и местам Google.Я успешно смог создать карту Google и получить информацию о заведениях через этот API, однако API javascript не возвращает «next_page_token», который позволяет мне искать дополнительные результаты после первых 20.

КакВы используете API javascript, чтобы получить next_page_token для циклического просмотра нескольких страниц результатов?Я в отчаянии, поскольку нигде не могу найти никакой информации об этом.

Редактировать - включая дополнительную информацию.

Выполнение поиска поблизости с использованием предоставленной документации Google здесь просто возвращает набор из 20 результатов без дополнительных свойств в ответе.

Вот запрос, который я делаю с использованием Javascript API.У меня есть скрипт, включенный в мой файл index.html.

let map = new google.maps.Map(this.$refs.map, {
    center: this.location,
    zoom: 12,
    disableDefaultUI: true,
    scrollwheel: false
})

let request = {
    location: this.location,
  radius: 10000,
  type: ['restaurants'] 
}

let service = new google.maps.places.PlacesService(map)
service.nearbySearch(request, (results, status) => {
    console.log("Results", results)
    console.log("Status", status)
})

Вот что Google отправляет обратно.Получение из консоли в devtools.

Results (20) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]

Результаты третьего аргумента запроса на поиск по соседству.

a4 {f: ƒ, b: ƒ, l: "CqQCIAEAAPcNpixD40jA39VnP-WMOZT21nGCcfpK_smpYhG66W…UWk72OjPB1A7Mdudz6UhoUD_vqC-QSk7CKnoveUXK0IHnQ8es", j: 1528768999850, hasNextPage: true}

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Из API поиска на странице Google

Доступ к дополнительным результатам:

По умолчанию каждый соседний поиск или текстовый поиск возвращает до 20 результатов создания взапрос;однако каждый поиск может дать до 60 результатов, разбитых на три страницы.Если ваш поиск вернет больше 20, то в ответ на поиск будет добавлено дополнительное значение - next_page_token.Передайте значение next_page_token параметру pagetoken нового поиска, чтобы увидеть следующий набор результатов.Если next_page_token имеет значение null или не возвращается, дальнейших результатов нет.Существует небольшая задержка между моментом выдачи next_page_token и его вступлением в силу.Запрос следующей страницы до того, как она станет доступной, вернет ответ INVALID_REQUEST.Повторная попытка запроса с тем же next_page_token вернет следующую страницу результатов

Короче говоря, в ответе на вызов типа: https://maps.googleapis.com/maps/api/place/textsearch/xml?query=restaurants+in+Sydney&key=YOUR_API_KEY

-OR-

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&rankby=distance&type=food&key=YOUR_API_KEY

Вы найдете:

{
   "html_attributions" : [],
   "next_page_token" : "CpQCAgEAAFxg8o-eU7_uKn7Yqjana-HQIx1hr5BrT4zBaEko29ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk-ReY7oulyuvKSQrw1lgJElggGlo0d6indiH1U-tDwquw4tU_UXoQ_sj8OBo8XBUuWjuuFShqmLMP-0W59Vr6CaXdLrF8M3wFR4dUUhSf5UC4QCLaOMVP92lyh0OdtF_m_9Dt7lz-Wniod9zDrHeDsz_by570K3jL1VuDKTl_U1cJ0mzz_zDHGfOUf7VU1kVIs1WnM9SGvnm8YZURLTtMLMWx8-doGUE56Af_VfKjGDYW361OOIj9GmkyCFtaoCmTMIr5kgyeUSnB-IEhDlzujVrV6O9Mt7N4DagR6RGhT3g1viYLS4kO5YindU6dm3GIof1Q",
   "results" : [{...}]
}

ВАЖНОЕ ПРИМЕЧАНИЕ: токен next_page_token не будет возвращен, если нет дополнительных результатов для отображения.Максимальное количество результатов, которое может быть возвращено, равно 60. Существует небольшая задержка между моментом выдачи next_page_token и его вступлением в силу.

Подробнее: https://developers.google.com/places/web-service/search#PlaceSearchPaging

0 голосов
/ 12 июня 2018

Я смотрю на страницу документа для "nearSearch" , и этот пример торчит:

// Perform a nearby search.
  service.nearbySearch(
      {location: pyrmont, radius: 500, type: ['store']},
      function(results, status, pagination) {
        if (status !== 'OK') return;

        createMarkers(results);
        moreButton.disabled = !pagination.hasNextPage;
        getNextPage = pagination.hasNextPage && function() {
          pagination.nextPage();
        };
      });

, потому что обратите внимание, что обратный вызов принимает третий параметр, который используется для получения дополнительных результатов.

...