地理编码器没有返回正确城市的名称

时间:2013-09-14 07:16:03

标签: android gps location geocoding

我有一个应用需要获取附近城市的名称并将其作为字符串返回。下面的代码有一个名为cityName的字符串,它应该显示我正确的城市。然而,当我运行应用程序时,它说我在印度孟买,而我实际上是在一个不同的大陆。我该如何解决这个问题?

private Boolean displayGpsStatus() {  
          ContentResolver contentResolver = getBaseContext()  
          .getContentResolver();  
          boolean gpsStatus = Settings.Secure  
          .isLocationProviderEnabled(contentResolver,   
          LocationManager.GPS_PROVIDER);  
          if (gpsStatus) {  
           return true; 



      } else {  
          AlertDialog.Builder builder = new AlertDialog.Builder(this);  
          builder.setMessage("Your Device's GPS is Disabled")  
          .setCancelable(false)  
          .setTitle("GPS Disabled")  
          .setPositiveButton("Enable GPS",  
           new DialogInterface.OnClickListener() {  
           public void onClick(DialogInterface dialog, int id) {  
           // finish the current activity  
           // AlertBoxAdvance.this.finish();  
           Intent myIntent = new Intent(  
           Settings.ACTION_SECURITY_SETTINGS);  
           startActivity(myIntent);  
              dialog.cancel();  
           }  
           })  
           .setNegativeButton("Cancel",  
           new DialogInterface.OnClickListener() {  
           public void onClick(DialogInterface dialog, int id) {  
            // cancel the dialog box  
            dialog.cancel();  
            }  
           });  
          AlertDialog alert = builder.create();  
          alert.show();  
       return false;

      }
     }  

 /*----------Listener class to get coordinates ------------- */  
 private class MyLocationListener implements LocationListener {  
        @Override  
        public void onLocationChanged(Location loc) {  

    /*----------to get City-Name from coordinates ------------- */  
      cityName=null;                
      Geocoder gcd = new Geocoder(getBaseContext(),   
   Locale.getDefault());               
      List<Address>  addresses;    
      try {    
      addresses = gcd.getFromLocation(loc.getLatitude(), loc  
   .getLongitude(), 1);    
      if (addresses.size() > 0)       
         cityName=addresses.get(0).getLocality();    
        } catch (IOException e) {              
        e.printStackTrace();    
      }   

        }  

        @Override  
        public void onProviderDisabled(String provider) {  
            // TODO Auto-generated method stub           
        }  

        @Override  
        public void onProviderEnabled(String provider) {  
            // TODO Auto-generated method stub           
        }  

        @Override  
        public void onStatusChanged(String provider,   
  int status, Bundle extras) {  
            // TODO Auto-generated method stub           
        }  
    }  

0 个答案:

没有答案