Подтвердить что ты не робот

Как получить 20 + результат от Google Places API?

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

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

4b9b3361

Ответ 1

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

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 результатов.

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

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

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

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

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

Ответ 2

API Google извлекает 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"

Ответ 3

Вы можете сделать это с помощью 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;
        }

    }

Ответ 4

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

Ответ 6

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

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

Ответ 7

Radarsearch больше не работает, потому что он не существует.