Как получить более 20 результатов из Google Places API? - PullRequest
16 голосов
/ 08 марта 2012

Я разрабатываю приложение, в котором я получаю список банкоматов рядом с пользователем.Для этого я использую Google Places API, но каждый раз он возвращает только 20 результатов.Я хочу получить больше результатов.В документе API упоминается, что он вернет 20 результатов, но я хотел бы знать, есть ли способ получить больше данных или мне нужно создать собственную базу данных для этого?Кроме того, я обнаружил, что в API нет всех банкоматов для Индии.Информация также не является точной для некоторых мест.Поэтому, пожалуйста, предложите мне какую-нибудь идею для этого, я должен использовать свою собственную базу данных или нет?Я знаю, что могу регистрировать места в Google Местах на карте, но проблема в том, что каждый раз он возвращает только 20 результатов;если в любом случае эта проблема решена, тогда будет здорово использовать API Адресов ..

Пожалуйста, помогите мне .....

Ответы [ 7 ]

16 голосов
/ 13 сентября 2012

Google API извлекает 20 результат на одной странице, если вы хотите использовать результат следующей страницы 20, тогда мы используем next_page_token с первой страницы Google xmlв результате.

1) https://maps.googleapis.com/maps/api/place/search/xml?location=Enter latitude,Enter Longitude&radius=10000&types=store&hasNextPage=true&nextPage()=true&sensor=false&key=Enter Google_Map_key

На втором шаге вы используете данные next_page_token первой страницы

2) https://maps.googleapis.com/maps/api/place/search/xml?location=Enter Latitude,Enter Longitude&radius=10000&types=store&hasNextPage=true&nextPage()=true&sensor=false&key=enter google_map_key &pagetoken="Enter the first page token Value"

16 голосов
/ 09 марта 2012

Согласно документации:

https://developers.google.com/places/web-service/search#PlaceSearchResponses

РЕДАКТИРОВАТЬ: Place API теперь поддерживает разбиение на страницы до 60 результатов. Подробнее см. Ниже.

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

Существуют также строгие условия обслуживания, которые указывают, что вы не можете выполнять предварительную выборку, кэширование или сохранение содержимого, если только это не идентификатор содержимого или ключ, которым вам разрешено хранить то есть ссылочный токен из поиска мест:

https://cloud.google.com/maps-platform/terms/?_ga=#3-license

Что касается невозможности найти банкоматы в Индии. Все места классифицируются по типу establishment до тех пор, пока у Google не будет достаточно метаданных о месте, чтобы классифицировать его по более конкретным типам мест, таким как ATM, cafe, bar и т. Д. Чтобы обойтись, можно найти больше результатов: используйте параметр keyword в вашем запросе, указав в качестве значения что-то вроде «ATM», «bank» или «finance». Согласно документации:

https://developers.google.com/places/web-service/search#PlaceSearchRequests

Параметр keyword сопоставляется со всеми доступными полями, включая, помимо прочего, имя, тип и адрес, а также отзывы клиентов и другой сторонний контент.

6 голосов
/ 10 октября 2012

Вы можете сделать это с помощью Google API JAVA Client. Вот пример использования Java-клиента для получения всех 60 результатов.

public PlacesList search(double latitude, double longitude, double radius, String types)
            throws Exception {

        try {

            HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
            HttpRequest request = httpRequestFactory
                    .buildGetRequest(new GenericUrl("https://maps.googleapis.com/maps/api/place/search/json?"));
            request.getUrl().put("key", YOUR_API_KEY);
            request.getUrl().put("location", latitude + "," + longitude);
            request.getUrl().put("radius", radius); 
            request.getUrl().put("sensor", "false");
            request.getUrl().put("types", types);

            PlacesList list = request.execute().parseAs(PlacesList.class);

            if(list.next_page_token!=null || list.next_page_token!=""){
                         Thread.sleep(4000);
                         /*Since the token can be used after a short time it has been  generated*/
                request.getUrl().put("pagetoken",list.next_page_token);
                PlacesList temp = request.execute().parseAs(PlacesList.class);
                list.results.addAll(temp.results);

                if(temp.next_page_token!=null||temp.next_page_token!=""){
                    Thread.sleep(4000);
                    request.getUrl().put("pagetoken",temp.next_page_token);
                    PlacesList tempList =  request.execute().parseAs(PlacesList.class);
                    list.results.addAll(tempList.results);
              }

            }
            return list;

        } catch (HttpResponseException e) {
            return null;
        }

    }
1 голос
/ 26 июня 2019

Радарный поиск больше не работает, потому что он больше не существует: https://cloud.google.com/blog/products/maps-platform/announcing-deprecation-of-place-add

см .: https://stackoverflow.com/a/48171023/9903

1 голос
/ 15 мая 2013

На странице мест Google на: https://developers.google.com/places/documentation/search В разделе «Запросы поиска радара» говорится, что с помощью: https://maps.googleapis.com/maps/api/place/radarsearch/output?parameters вы получаете 200 результатов, используя этот вызов, но обратите внимание, что каждый вызов использует 5 запросов противваша квота.

0 голосов
/ 24 мая 2016

Вы можете получить больше результатов от токена следующей страницы:

https://maps.googleapis.com/maps/api/place/textsearch/json?query=[your search key word]&location=latitude,longitude&radius=value&key=[your API key]&next_page_token=next_page_token value
0 голосов
/ 27 апреля 2012

Пожалуйста, попробуйте ниже URL с параметрами ниже

URL = "http://www.google.com/maps?q=restaurant&ie=UTF8&hl=en&sll=0.000000,0.000000&sspn=0.000000,0.000000&vps=3&sa=N&start=20"

Где начало = Нет результатов, скажем, например, начало с 0 или 10 0r 20 -

...