歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 通過經緯度獲取地理位置信息

Android 通過經緯度獲取地理位置信息

日期:2017/3/1 10:47:33   编辑:Linux編程

首先獲取LocationManager、Location及Criteria

  1. LocationManager locationManager;
  2. String context = Context.LOCATION_SERVICE;
  3. locationManager = (LocationManager) getSystemService(context);
  4. Criteria criteria = new Criteria();
  5. criteria.setAccuracy(Criteria.ACCURACY_FINE);
  6. criteria.setAltitudeRequired(false);
  7. criteria.setBearingRequired(false);
  8. criteria.setCostAllowed(false);
  9. criteria.setPowerRequirement(Criteria.POWER_LOW);
  10. String provider = locationManager.getBestProvider(criteria,
  11. true);
  12. Location location = locationManager
  13. .getLastKnownLocation(provider);

Criteria 類介紹:

Criteria是“精確度”的意思,Criteria類提供若干個查詢條件:

(1) public void setAccuracy( int accuracy)

位置解析的精度,高或低

參數: Criteria. ACCURACY_FINE,精確模式;

Criteria. ACCURACY_COARSE,模糊模式;

(2) public void setAltitudeRequired(booleanaltitudeRequired)

是否提供海拔高度信息,是或否

(3) public void setBearingRequired(boolean bearingRequired)

是否提供方向信息,是或否

(4) public void setCostAllowed(boolean costAllowed)

是否允許運營商計費,是或否

(5) public void setPowerRequirement(int level)

電池消耗,無、低、中、高,參數 Criteria. NO_REQUIREMENT,Criteria. POWER_LOW,Criteria. POWER_MEDIUM, orCriteria. POWER_HIGH,

(6) public void setSpeedRequired(boolean speedRequired)

是否提供速度信息,是或否

獲取地理信息函數:

  1. private void updateWithNewLocation(Location location) {
  2. String coordinate;
  3. TextView loc = (TextView) findViewById(R.id.loc);
  4. String addressStr = "no address \n";
  5. if (location != null) {
  6. double lat = location.getLatitude();
  7. double lng = location.getLongitude();
  8. coordinate = "Latitude:" + lat + "\nLongitude:" + lng;
  9. double latitude = location.getLatitude();
  10. double longitude = location.getLongitude();
  11. Geocoder geocoder = new Geocoder(context, Locale.getDefault());
  12. try {
  13. List<Address> addresses = geocoder.getFromLocation(latitude,
  14. longitude, 1);
  15. StringBuilder sb = new StringBuilder();
  16. if (addresses.size() > 0) {
  17. Address address = addresses.get(0);
  18. for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
  19. sb.append(address.getAddressLine(i)).append("\n");
  20. }
  21. sb.append(address.getLocality()).append("\n");
  22. sb.append(address.getLocality()).append("\n");
  23. sb.append(address.getCountryName());
  24. addressStr = sb.toString();
  25. }
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. } else {
  30. coordinate = "no coordinate!\n";
  31. }
  32. loc.setText("your coordinate:\n" + coordinate + "\n"
  33. + addressStr);
  34. }
Copyright © Linux教程網 All Rights Reserved