Google Place API не поддерживает несколько типов

когда я указываю URL-адрес, указанный ниже, я получаю правильные результаты, но

    String baseUrl = "https://maps.googleapis.com/maps/api/place/search/xml?location=";
    String last="&radius=20000&types=school&sensor=false&key=";

    URL = baseUrl + latitude + "," + longitude + last + API_KEY ;

когда я пытаюсь использовать несколько типов, например:

школа | Университет

он показывает принудительное закрытие....EX

 String baseUrl = "https://maps.googleapis.com/maps/api/place/search/xml?location=";
    String last="&radius=20000&types=school|university&sensor=false&key=";

    URL = baseUrl + latitude + "," + longitude + last + API_KEY ;

какую ошибку я делаю...


person santosh407    schedule 20.04.2012    source источник
comment
Пожалуйста, опубликуйте журнал, чтобы мы могли увидеть полученное вами исключение и трассировку стека.   -  person Austyn Mahoney    schedule 20.04.2012
comment
Не удалось запустить действие ComponentInfo{com.run.trial/com.run.trial.RuntrialActivity}: java.lang.NullPointerException   -  person santosh407    schedule 22.04.2012
comment
в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)   -  person santosh407    schedule 22.04.2012
comment
в android.app.ActivityThread.access$1500(ActivityThread.java:123)   -  person santosh407    schedule 22.04.2012
comment
Приведенный выше запрос URL-адреса отлично работает для меня, может быть, ваше приложение ломается, когда результат не возвращается? У вас есть проверка статуса?   -  person Chris Green    schedule 23.04.2012
comment
вы использовали запятую вместо трубы?   -  person Umair A.    schedule 09.09.2012


Ответы (4)


Это работает для меня при использовании нескольких типов:

String keyString = "your_key";

String JSON_BASE = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=";
String types = "airport|hospital";
try {
        placesSearchStr=JSON_BASE+getLat()+","+getLng()+
                        "&radius=1000&sensor=false&types="+URLEncoder.encode(types,"UTF-8")+
                        "&key="+keyString;
    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();
    }

Акцент здесь на types="+URLEncoder.encode(types,"UTF-8")

person ajar1189    schedule 28.10.2013

Привет, друг, у меня была такая же проблема, как и у тебя, после долгих поисков я нашел другое решение для анализа ответа Google с помощью API Volley http://java.dzone.com/articles/android-%E2%80%93-volley-library Библиотека Volley для анализа XML-ответа Android?

volley liabrery не имеет запроса на xml, но имеет строковый запрос и ответ, вы можете преобразовать строку в формат xml, чем анализировать данные как xml

person Android Leo    schedule 08.08.2013

Теперь я друг, теперь у меня есть поддержка нескольких типов. использовать URL-адрес запроса класса uri builder

public String getURL(double lat, double lng){
    Uri uri = new Uri.Builder()
    .scheme("https")
    .authority("maps.googleapis.com")
    .path("maps/api/place/search/xml")
    .appendQueryParameter("location", lat+",",lng)
    .appendQueryParameter("radius", "5000")
    .appendQueryParameter("types",   "zoo|travel_agency|taxi_stand|pet_store|museum|movie_theater|library|jewelry_store|hospital|clothing_store|atm|church|bus_station|art_gallery|bank|beauty_salon|city_hall|book_store|park|shopping_mall|train_station|airport")
    .appendQueryParameter("sensor", "true")
    .appendQueryParameter("key", "your key")
    .build();
    return uri.toString();
}
person Android Leo    schedule 15.08.2013

Попробуйте поставить такие параметры, как where типа String types = "cafe|restaurant";:

try {
    HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
    HttpRequest request = httpRequestFactory
            .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
    request.getUrl().put("key", API_KEY);
    request.getUrl().put("location", _latitude + "," + _longitude);
    request.getUrl().put("radius", _radius); // in meters
    request.getUrl().put("sensor", "false");

    if(types != null)
        request.getUrl().put("types", types);

    PlacesList list = request.execute().parseAs(PlacesList.class);
    // Check log cat for places response status
    Log.d("Places Status", "" + list.status);
    return list;

} catch (HttpResponseException e) {
    Log.e("Error:", e.getMessage());
    return null;
}
person Pratik Butani    schedule 29.11.2014