Ниже мой код. Для некоторых адресов приведенный ниже код работает в Android Device API уровня 8. Но для некоторого адреса значение адреса возвращается как [].BUt. Я не получаю такую проблему при вызове того же сервера с iphone.
Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 1);
Как решить эту проблему в устройстве Android.
Просто используйте следующий метод... при вызове введите строковый ввод
public static JSONObject getLocationInfo(String address) {
StringBuilder stringBuilder = new StringBuilder();
try {
address = address.replaceAll(" ","%20");
HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonObject;
}
Проблема здесь в том, что вы запрашиваете только один адрес во время запроса
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 1);
Android будет пытаться найти только один адрес в этом случае. Вы должны поднять это 2 или 3.
Возможно, на второй или третьей позиции вы получите успех.
Измените его на
List<Address> address = geocoder.getFromLocationName(MAPADDRESS, 3);