Известно, что геокодер ненадежен на старых устройствах (а также на Genymotion, поэтому я использую вспомогательный класс, который работает во всех средах), а также проблематичен в целом как класс (и точность результатов).
Вы можете использовать карты Google для очень простой геолокации,
Я написал асинхронную задачу, чтобы сначала использовать Geocoder и откатиться к HttpRequest (с использованием залпа), если это не удается, по адресу https://gist.github.com/selecsosi/6705630
соответствующая часть:
Сделать запрос на
"http://maps.google.com/maps/api/geocode/json?address=" + URLEncoder.encode(mAddress, "utf-8") + "&ka&sensor=false"
где mAddress — это местоположение, которое вы ищете.
Этот запрос вернет вам объект JSON, который вы можете проанализировать следующим образом.
public static LatLng getLatLngFromGoogleJson(JSONObject jsonObject) {
double lon = 0d;
double lat = 0d;
try {
lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
} catch (JSONException e) {
if(Log.isLoggable(TAG, Log.ERROR))Log.e(TAG, "Error parsing google response", e);
}
return new LatLng(lat, lon);
}
person
Selecsosi
schedule
25.09.2013