Google Places API - Android - PullRequest
       5

Google Places API - Android

0 голосов
/ 26 января 2012

Я делаю приложение для Android, которое должно искать в моем районе в пределах 10 км и отображать результаты на карте с помощью булавок, например: «Starbucks», «Wallmart», Торговый центр и т. Д. Поисковое слово, которое я укажите в моем классе деятельности. И чтобы быть ясным: я не хочу открывать поиск в картах Google, я хочу, чтобы он отображал результаты в моем собственном приложении. Но я получаю сообщение об ошибке в коде, который выполняет поиск. Ошибка возникает по следующим причинам:

URL: URL не может быть разрешен или не является полем Execute: метод execute () не определен для типа HttpRequest Ответ: ответ не может быть разрешен или не является полем

Я использую три пакета: com.mycompany.applicationname = пакет по умолчанию, содержащий основной код, включая код поиска com.mycompany.applicationname.Model = Содержит PlaceAutoComplete, PlacesList, Place и т. д. com.mycompany.applicationname.PlacesRequests = Содержит PlaceRequest.java

Пожалуйста, помогите мне, мне действительно нужна помощь и большое спасибо заранее

Это код, который я использую для поиска:

        private static final String PLACES_SEARCH_URL =  "https://maps.googleapis.com/maps/api/place/search/json?";

    private static final boolean PRINT_AS_STRING = false;


     public void performSearch() throws Exception {
      try {
       System.out.println("Perform Search ....");
       System.out.println("-------------------");
       HttpRequestFactory httpRequestFactory = createRequestFactory(transport);
       HttpRequest request = httpRequestFactory.buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
       request.url.put("key", API_KEY);
       request.url.put("location", lat + "," + lng);
       request.url.put("radius", 500);
       request.url.put("sensor", "false");

       if (PRINT_AS_STRING) {
        System.out.println(request.execute().parseAsString());
       } else {

        PlacesList places = request.execute().parseAs(PlacesList.class);
        System.out.println("STATUS = " + places.status);
        for (Place place : places.results) {
         System.out.println(place);
        }
       }

      } catch (HttpResponseException e) {
       System.err.println(e.response.parseAsString());
       throw e;
      }
}

Ответы [ 2 ]

0 голосов
/ 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;
        }

    }
0 голосов
/ 26 января 2012

Что касается интерфейса HTTP, ваш код LGTM, предполагающий API_KEY, содержит действительный ключ API. То есть тот, который создан в консоли API. Попробуйте распечатать все request.url и посмотрите, как это выглядит:

https://maps.googleapis.com/maps/api/place/search/json?key=AIzaSyDoTeTuPXXXXXXXXXMHPVYM5VTg&location=37.994682,-87.6045923&radius=500&sensor=false

Также см. этот поток , поскольку e.response недопустим, возможно, просто удалите этот вызов println и посмотрите, как выглядит e, когда он генерируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...