1

I managed to get the city name using the GeoCoder, but sometimes the GPS returns values that GetLocality can not recognize (returning "null"). I think the best solution is to get the nearest city name. Can anyone tell me please how to do that. Or if there is another alternative to solve it, it's OK.

 public void getCityName(double dLatitude, double dLongitude) throws IOException{
    Geocoder gcd = new Geocoder(this, Locale.getDefault());
    List<Address> addresses = gcd.getFromLocation(dLatitude, dLongitude, 1);

    TextView cityname = (TextView)findViewById(R.id.city_name);  
    if (addresses.size() > 0) {             
        cityname.setText( "" +addresses.get(0).getLocality() + "," + addresses.get(0).getCountryName() );          
    }
}
user2613911
  • 79
  • 1
  • 6
  • yes you can use the google api for this and request to google and parse the json and get the address according to your longitude and latitude. – Sunil Kumar Jul 28 '13 at 12:58

1 Answers1

0

you can use this way.

ProgressDialog dialog=null;
   @Override
    public void onClick(View v) {
            dialog = ProgressDialog.show(context, "", "Please! Wait...", true);
            GetCurrentAddress result = new GetCurrentAddress();
            result.execute("");
        }



    // getting address task
    private class GetCurrentAddress extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... urls) {
            String responseText = null;
            String googleurl = "http://maps.google.com/maps/geo?";
            String latitude="38.89";
            String longitude ="-77.03";
      StringBuilder sbuilder=new StringBuilder();
      sbuilder.append(googleurl);

      sbuilder.append("q="+latitude+","+longitude);
      sbuilder.append("&amp;output=responseText&amp;sensor=true");
      String url=sbuilder.toString();

      try { 
          DefaultHttpClient httpclient=new DefaultHttpClient(); 
          HttpPost httppost=new HttpPost(url); 
          HttpResponse httpresponse=httpclient.execute(httppost); 
          HttpEntity httpentity=httpresponse.getEntity(); 
          InputStream is=httpentity.getContent();
          BufferedReader reader=new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
          StringBuilder sb=new StringBuilder();
          String line=null;
        while((line=reader.readLine())!=null)
         { 
          sb.append(line+"\n");

         } 
        is.close(); 
        responseText=sb.toString();
      } 
      catch(ClientProtocolException e) 
      { 
          e.printStackTrace(); 
      } 
      catch (IOException e) 
      { 
          e.printStackTrace();
      }
      return responseText;
      }

        @Override
        protected void onPostExecute(String resultString) {
            dialog.dismiss();

            String response= resultString;

            if (responseText != null) {
                Log.v(TAG, "json response is:" + response);
                try {
                    jObj = new JSONObject(response);
                    jsonarray = jObj.getJSONArray("Placemark");
                    for (int i = 0; i < jsonarray.length(); i++) {
                        JSONObject innerJsonobject = jsonarray.getJSONObject(i);
                        String jsonaddress = innerJsonobject
                                .getString("address");


                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
Sunil Kumar
  • 7,086
  • 4
  • 32
  • 50
  • This google url is now replaced with Google Maps API V3 URL ---- http://maps.googleapis.com/maps/api/geocode/json?latlng=5.975632,80.427973&sensor=true – codezoner Nov 04 '14 at 11:10