ジオコーダーは、古いデバイス (および Genymotion と同様に、すべての環境で機能するヘルパー クラスを使用するため) では信頼性が低いことで有名であり、クラス (および結果の精度) として一般的に問題があります。
グーグルマップを使えば簡単に地理位置情報を取得できます
最初に Geocoder を使用し、失敗した場合に HttpRequest (ボレーを使用) にフォールバックするために私が書いた asynctask は、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);
}