2012-02-20 15 views
0

私は現在の場所を見つける必要のあるアプリケーションを書きます。コードは緯度と経度を正しく戻していますが、実際のアドレス(逆ジオコーディング) が問題になることはありません。 誰かが助けてください、私はアンドロイドに新しいです。 私はonLocationChanged(所在地LOC)逆ジオコーディングが動作していません

  void updateWithNewLocation(Location location) 
      { 
        if (location != null) 
        { 
          double lat = 29.00;//location.getLatitude(); 
          double lng = 77.0;//location.getLongitude(); 
          longitudeLattitudeString="Lattitude :"+lat+" Longitude :"+lng; 


          Geocoder gc = new Geocoder(this, Locale.getDefault()); 

          try 
          { 
            List<Address> addresses = gc.getFromLocation(lat, lng, 1); 
            StringBuilder sb = new StringBuilder(); 
            //Toast.makeText(this, "Problem1", 2000).show(); 
            if (addresses.size() > 0) 
            { 
              Address address = addresses.get(0); 
              for (int i = 0; i < address.getMaxAddressLineIndex(); i++) 
               sb.append(address.getAddressLine(i)).append("\n"); 
              sb.append(address.getLocality()).append("\n"); 
              Toast.makeText(this, "Problem2", 2000).show(); 
              sb.append(address.getPostalCode()).append("\n"); 
              sb.append(address.getCountryName()); 
            } 
            else 
            { 
             addressString=" No Location"; 
             //Toast.makeText(this, "Problem3", 2000).show(); 
            } 
            addressString = sb.toString(); 
          } 
          catch (IOException e) 
          { 
           //Toast.makeText(thisContext, "Problem : InCatch", 2000).show(); 
          } 
        } 


        else 
        { 
          longitudeLattitudeString = "No location found";  

        } 




      } 

答えて

3

逆ジオコーディングはエミュレータ、デバイス上のテストでは動作しないメソッドから呼び出される()アンドロイド4.0 updateWithNewLocationとエミュレータでテストしています。

+0

ありがとうございましたjitendra私はそのことを知らなかった –

+0

Googleプレイサービスの標準エミュレータで動作しますが、おそらくポストは古いです。 –

0
public static String getUserLocation(String lat, String lon) { 
     String userlocation = null; 
     String readUserFeed = readUserLocationFeed(lat.trim() + ","+ lon.trim()); 
     try { 
      JSONObject Strjson = new JSONObject(readUserFeed); 
      JSONArray jsonArray = new JSONArray(Strjson.getString("results")); 
      userlocation = jsonArray.getJSONObject(1) 
        .getString("formatted_address").toString(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     Log.i("User Location ", userlocation); 
     return userlocation; 
    } 

    public static String readUserLocationFeed(String address) { 
     StringBuilder builder = new StringBuilder(); 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?latlng="+ address + "&sensor=false"); 
     try { 
      HttpResponse response = client.execute(httpGet); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       InputStream content = entity.getContent(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        builder.append(line); 
       } 
      } else { 
       Log.e(ReverseGeocode.class.toString(), "Failed to download file"); 
      } 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return builder.toString(); 
    } 
関連する問題