Android геокодер не может найти адрес, Google Maps может найти

Посмотрите здесь https://www.google.com.tr/maps/place/Akbank+Sanat+Beyo%C4%9Flu/@41.0356243,28.9803398,17z/data=!3m1!4b1!4m2!3m1!1s0x14cab7643e33e919:0xad542d45132fe9ce?hl=en

это может найти, когда я нажму на поиск

Akbank Sanat istanbul

но когда я использую этот код, он не может найти:

  private LatLng getCoors(String loc, String desc){
    Log.v(TAG, "getCoors ");
    loc = loc +" Istanbul";

    if (Geocoder.isPresent()) {
        Log.v(TAG, "getCoors geocoder present");
        geocoder = new Geocoder(mContext, Locale.getDefault());
       Log.v(TAG, "location: "+loc);

        try {
            From_geocode = geocoder.getFromLocationName(loc, 1);
            Log.v(TAG, "fromgeocode: "+From_geocode);
        } catch (IOException e) {
            e.printStackTrace();
            Log.v(TAG, "catched error - from geocode");//need to do something
        }

        if (!From_geocode.isEmpty()) {
            Log.v(TAG, " getcoors fromgeocod enot not empty  ");
            coors = new LatLng(From_geocode.get(0).getLatitude(), From_geocode.get(0).getLongitude());


            Log.v(TAG, "LATITUTE=====" + coors.latitude + "   LONGITUTE=====" + coors.longitude);
            return coors;
        }//second if end
        else{
            Log.v(TAG, " hata getcoors fromgeocode empty  ");
        }
    }//first if end
    else{
        Log.v(TAG, " hata getcoors geocoder not preset  ");
    }
    return null;
}//getcoors end

когда я использую тот же адрес,

else{
            Log.v(TAG, " hata getcoors fromgeocode empty  ");
        }

это идет здесь. Итак, это означает, что он не может получить адрес, который может получить googlemaps.

Что я делаю неправильно? Есть ли простой способ без использования JSON или даже без подключения?

1 ответ

Решение

Видимо, у геокодера есть проблемы с точным расчетом местоположений за один прогон. Попробуйте неоднократно запрашивать местоположение 5-10 раз, пока не получите ответ.

Или, для более точного способа получения адреса из строки, попробуйте реализовать следующее:

public JSONObject getLocationInfo() {

        HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?latlng="+lat+","+lng+"&sensor=true");
        HttpClient client = new DefaultHttpClient();
        HttpResponse response;
        StringBuilder stringBuilder = new StringBuilder();

        try {
            response = client.execute(httpGet);
            HttpEntity entity = response.getEntity();
            InputStream stream = entity.getContent();
            int b;
            while ((b = stream.read()) != -1) {
                stringBuilder.append((char) b);
            }
        } catch (ClientProtocolException e) {
            } catch (IOException e) {
        }

        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject = new JSONObject(stringBuilder.toString());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

И называя это так:

JSONObject ret = getLocationInfo(); 
JSONObject location;
String location_string;
try {
    location = ret.getJSONArray("results").getJSONObject(0);
    location_string = location.getString("formatted_address");
    Log.d("test", "formattted address:" + location_string);
} catch (JSONException e1) {
    e1.printStackTrace();

}

Этот код был от Шобхит Пури, и оригинальный вопрос можно найти здесь.

Другие вопросы по тегам