2016-05-28 7 views
-1

Так что я пытаюсь реализовать Google Maps с помощью окна поиска. В настоящее время окно поиска извлекает 20 верхних мест на основе результата поиска.searchBox Google Maps с разбивкой на страницы

Что я заметил, это не разбиение на страницы. Например, если я наберу «пиццу», это даст мне 20 лучших результатов в текущих границах. Но когда я использую функцию текстового поиска, чтобы получить список поисков пиццы, я получаю более 20 результатов с разбиением на страницы.

Есть ли способ получить разбиение на страницы на свой поискBox или использовать функцию textSearch для предоставления разбивки на страницы после того, как вы использовали searchBox?

То, что я здесь отрывок:

var canvas = element.find('div')[0]; 
var mapOptions = { 
    zoom: 5, 
    minZoom: 2, 
}; 
var searchBox = new google.maps.places.SearchBox('pizza'); 
var placeService = new google.maps.places.PlacesService(map); 

google.maps.event.addListener(searchBox, 'places_changed', locationChange); 

function locationChange() { 
    var places = searchBox.getPlaces(); 
    //Determine if there are additional places not provided by searchbox. Using text 
    var request = { 
     query: input.value, 
    }; 
    var textSearchPlaces = placeService.textSearch(request, callback); 
    function callback(results, status, pagination) { 
     if (status == google.maps.places.PlacesServiceStatus.OK) { 
      var hi = places; 
      for (var i = 0; i < results.length; i++) { 
       var place = results[i]; 
      } 
     } 
    } 
    if (places.length === 0) { 
     return; 
    } 
}; 

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

Я также подумал о том, чтобы просто удалить поисковый запрос и просто пойти с функцией textSearch, но я понял, что у меня не будет функции автозаполнения, которая предоставляет предложения, которые предоставляет searchBox.

+1

Полностью игнорировать места, возвращаемые поисковой системой, и запускать только текстовый поиск, основанный на значении '' –

+0

Хммм это интересный способ сделать это Lol. –

ответ

-1

Скорее всего вы получаете OVER_QUERY_LIMIT.

if (status == google.maps.places.PlacesServiceStatus.OK) {

Попробуйте очереди в details requests для после того, как у вас есть все список завершен, добавляя ту же логику, таймаут для проверки google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT на этой линии.

if (pagination.hasNextPage) { 
//add all places to the list 
setTimeout('pagination.nextPage()',2000); 
} else { 
createMarkers(placesList); 
} 

При использовании мест вы должны использовать google.maps.places.PlacesServiceStatus.OVER_QUERY_LIMIT.

Смежные вопросы