2017-04-22 63 views
0

我没有编码这里储备gecoder,没有地址发现在Android的

经纬度显示的值,例如:纬度== 12.9165282和经度== 80.1522998和

GPS类的回报:“没有发现人地址服务:对开发者的注意事项,如果谷歌本身没有发现地址,那么你就无能为力。

转换纬度和长期通过网上 来解决这个返回地址:Erikarai,马达姆巴卡姆,钦奈,泰米尔纳德邦600073,印度

在mycode的它不会从谷歌

公共返回地址,并没有ADRESS类MainActivity延伸ActionBarActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.container, new PlaceholderFragment()).commit(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

/** 
* A placeholder fragment containing a simple view. 
*/ 
public static class PlaceholderFragment extends Fragment { 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main, container, 
       false); 

     final TextView tvLocation = (TextView)rootView.findViewById(R.id.tvLocation); 
     final TextView tvAddress = (TextView)rootView.findViewById(R.id.tvAddress); 

     Button btnGetLocation = (Button)rootView.findViewById(R.id.btnGetLocation); 

     btnGetLocation.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       String address = ""; 
       GPSService mGPSService = new GPSService(getActivity()); 
       mGPSService.getLocation(); 

       if (mGPSService.isLocationAvailable == false) { 

        // Here you can ask the user to try again, using return; for that 
        Toast.makeText(getActivity(), "Your location is not available, please try again.", Toast.LENGTH_SHORT).show(); 
        return; 

        // Or you can continue without getting the location, remove the return; above and uncomment the line given below 
        // address = "Location not available"; 
       } else { 

        // Getting location co-ordinates 
        double latitude = mGPSService.getLatitude(); 
        double longitude = mGPSService.getLongitude(); 
        Toast.makeText(getActivity(), "Latitude:" + latitude + " | Longitude: " + longitude, Toast.LENGTH_LONG).show(); 

        address = mGPSService.getLocationAddress(); 

        tvLocation.setText("Latitude: " + latitude + " \nLongitude: " + longitude); 
        tvAddress.setText("Address: " + address); 
       } 

       Toast.makeText(getActivity(), "Your address is: " + address, Toast.LENGTH_SHORT).show(); 

       // make sure you close the gps after using it. Save user's battery power 
       mGPSService.closeGPS(); 


      } 
     }); 







     return rootView; 
    } 
} 

这个类gpsserice

 public class GPSService extends Service implements LocationListener { 

// saving the context for later use 
private final Context mContext; 

// if GPS is enabled 
boolean isGPSEnabled = false; 
// if Network is enabled 
boolean isNetworkEnabled = false; 
// if Location co-ordinates are available using GPS or Network 
public boolean isLocationAvailable = false; 

// Location and co-ordinates coordinates 
Location mLocation; 
double mLatitude; 
double mLongitude; 

// Minimum time fluctuation for next update (in milliseconds) 
private static final long TIME = 30000; 
// Minimum distance fluctuation for next update (in meters) 
private static final long DISTANCE = 20; 

// Declaring a Location Manager 
protected LocationManager mLocationManager; 

public GPSService(Context context) { 
    this.mContext = context; 
    mLocationManager = (LocationManager) mContext 
      .getSystemService(LOCATION_SERVICE); 

} 

/** 
* Returs the Location 
* 
* @return Location or null if no location is found 
*/ 
public Location getLocation() { 
    try { 

     // Getting GPS status 
     isGPSEnabled = mLocationManager 
       .isProviderEnabled(LocationManager.GPS_PROVIDER); 

     // If GPS enabled, get latitude/longitude using GPS Services 
     if (isGPSEnabled) { 
      mLocationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, TIME, DISTANCE, this); 
      if (mLocationManager != null) { 
       mLocation = mLocationManager 
         .getLastKnownLocation(LocationManager.GPS_PROVIDER); 
       if (mLocation != null) { 
        mLatitude = mLocation.getLatitude(); 
        mLongitude = mLocation.getLongitude(); 
        isLocationAvailable = true; // setting a flag that 
               // location is available 
        return mLocation; 
       } 
      } 
     } 

     // If we are reaching this part, it means GPS was not able to fetch 
     // any location 
     // Getting network status 
     isNetworkEnabled = mLocationManager 
       .isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

     if (isNetworkEnabled) { 
      mLocationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, TIME, DISTANCE, this); 
      if (mLocationManager != null) { 
       mLocation = mLocationManager 
         .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
       if (mLocation != null) { 
        mLatitude = mLocation.getLatitude(); 
        mLongitude = mLocation.getLongitude(); 
        isLocationAvailable = true; // setting a flag that 
               // location is available 
        return mLocation; 
       } 
      } 
     } 
     // If reaching here means, we were not able to get location neither 
     // from GPS not Network, 
     if (!isGPSEnabled) { 
      // so asking user to open GPS 
      askUserToOpenGPS(); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    // if reaching here means, location was not available, so setting the 
    // flag as false 
    isLocationAvailable = false; 
    return null; 
} 

/** 
* Gives you complete address of the location 
* 
* @return complete address in String 
*/ 
public String getLocationAddress() { 

    if (isLocationAvailable) { 

     Geocoder geocoder = new Geocoder(mContext, Locale.getDefault()); 
     // Get the current location from the input parameter list 
     // Create a list to contain the result address 
     List<Address> addresses = null; 
     try { 
      /* 
      * Return 1 address. 
      */ 
      addresses = geocoder.getFromLocation(mLatitude, mLongitude, 1); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
      return ("IO Exception trying to get address:" + e1); 
     } catch (IllegalArgumentException e2) { 
      // Error message to post in the log 
      String errorString = "Illegal arguments " 
        + Double.toString(mLatitude) + " , " 
        + Double.toString(mLongitude) 
        + " passed to address service"; 
      e2.printStackTrace(); 
      return errorString; 
     } 
     // If the reverse geocode returned an address 
     if (addresses != null && addresses.size() > 0) { 
      // Get the first address 
      Address address = addresses.get(0); 
      /* 
      * Format the first line of address (if available), city, and 
      * country name. 
      */ 
      String addressText = String.format(
        "%s, %s, %s", 
        // If there's a street address, add it 
        address.getMaxAddressLineIndex() > 0 ? address 
          .getAddressLine(0) : "", 
        // Locality is usually a city 
        address.getLocality(), 
        // The country of the address 
        address.getCountryName()); 
      // Return the text 
      return addressText; 
     } else { 
      return "No address found by the service: Note to the developers, If no address is found by google itself, there is nothing you can do about it."; 
     } 
    } else { 
     return "Location Not available"; 
    } 

} 



/** 
* get latitude 
* 
* @return latitude in double 
*/ 
public double getLatitude() { 
    if (mLocation != null) { 
     mLatitude = mLocation.getLatitude(); 
    } 
    return mLatitude; 
} 

/** 
* get longitude 
* 
* @return longitude in double 
*/ 
public double getLongitude() { 
    if (mLocation != null) { 
     mLongitude = mLocation.getLongitude(); 
    } 
    return mLongitude; 
} 

/** 
* close GPS to save battery 
*/ 
public void closeGPS() { 
    if (mLocationManager != null) { 
     mLocationManager.removeUpdates(GPSService.this); 
    } 
} 

/** 
* show settings to open GPS 
*/ 
public void askUserToOpenGPS() { 
    AlertDialog.Builder mAlertDialog = new AlertDialog.Builder(mContext); 

    // Setting Dialog Title 
    mAlertDialog.setTitle("Location not available, Open GPS?") 
    .setMessage("Activate GPS to use use location services?") 
    .setPositiveButton("Open Settings", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      mContext.startActivity(intent); 
      } 
     }) 
     .setNegativeButton("Cancel",new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.cancel(); 
       } 
      }).show(); 
} 

/** 
* Updating the location when location changes 
*/ 
@Override 
public void onLocationChanged(Location location) { 
    mLatitude = location.getLatitude(); 
    mLongitude = location.getLongitude(); 
} 

@Override 
public void onProviderDisabled(String provider) { 
} 

@Override 
public void onProviderEnabled(String provider) { 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    return null; 
} 

}

回答

0

可以我们这种方式,从特定位置获取地址

public void getUserAddress(LatLng latLng) { 
    Geocoder geocoder; 
    List<Address> addresses = null; 
    String errorMessage = getString(R.string.unknown_address); 
    geocoder = new Geocoder(mContext, Locale.getDefault()); 
    try { 
     addresses = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1); 
    } catch (IOException e) { 
     e.printStackTrace(); 

    } 
    if (addresses != null) { 
     if (addresses.size() > 0) { 
      String address = addresses.get(0).getAddressLine(0); 
      String city = addresses.get(0).getLocality(); 
      return address + " , " + city; 
     } else 
      return errorMessage; 

    } else 
     return errorMessage; 

} 
相关问题