java android.io.IOException: Service non disponible
Description:j'utilise Google maps API V2
.J'ai mis en œuvre Android Reverse Geocoding
à l'endroit touché.
Problème: Il jette exception sur
try {
addresses = geocoder.getFromLocation(latitude, longitude,1);}
catch (IOException e)
{
e.printStackTrace();
if(AppConstants.DEBUG)Log.v(AppConstants.DEBUG_TAG," e.printStackTrace(): "+e.getMessage());
}
je suis latitude
et longitude
valeurs correctes, mais je ne peux pas comprendre pourquoi il lance exception
et J'ai aussi fait des recherches sur Google mais ça n'a pas pu aider.
quelqu'un Peut-il expliquer en détails??
33
demandé sur
Vikalp Patel
2013-04-20 14:13:19
3 réponses
Comme indiqué dans ce Android issue 38009-Geocoder lancer exception: IOException: Service non disponible redémarrer l'appareil résoudra le problème
75
répondu
Sankar V
2013-04-20 11:30:12
si vous ne voulez pas redémarrer l'appareil Utilisez ceci
public JSONObject getLocationFormGoogle(String placesName) {
HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?address=" +placesName+"&ka&sensor=false");
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;
}
public LatLng getLatLng(JSONObject jsonObject) {
Double lon = new Double(0);
Double lat = new Double(0);
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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new LatLng(lat,lon);
}
LatLng Source =getLatLng(getLocationFormGoogle(placesName));
16
répondu
Anil M H
2015-03-17 04:48:16
j'ai modifié la solution @Ani pour obtenir le nom de la ville à partir des paramètres lat long:
public static String getLocationCityName( double lat, double lon ){
JSONObject result = getLocationFormGoogle(lat + "," + lon );
return getCityAddress(result);
}
protected static JSONObject getLocationFormGoogle(String placesName) {
String apiRequest = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + placesName; //+ "&ka&sensor=false"
HttpGet httpGet = new HttpGet(apiRequest);
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;
}
protected static String getCityAddress( JSONObject result ){
if( result.has("results") ){
try {
JSONArray array = result.getJSONArray("results");
if( array.length() > 0 ){
JSONObject place = array.getJSONObject(0);
JSONArray components = place.getJSONArray("address_components");
for( int i = 0 ; i < components.length() ; i++ ){
JSONObject component = components.getJSONObject(i);
JSONArray types = component.getJSONArray("types");
for( int j = 0 ; j < types.length() ; j ++ ){
if( types.getString(j).equals("locality") ){
return component.getString("long_name");
}
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
return null;
}
9
répondu
Pawel Cala
2015-03-31 04:19:58