{Android App} Как я могу отобразить расстояние от моего текущего местоположения и указанной точки? - PullRequest
0 голосов
/ 04 марта 2011

я исследовал это часами, и единственные ответы, которые я вижу, указывают мне на http://developer.android.com/reference/android/location/Location.html

и использовать метод

public static void distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float [] результаты)

Мне нужна помощь, чтобы понять, как это работает по отношению к моему приложению. вот как я получаю свое местоположение.

    LocationManager locationManager;
    String context = Context.LOCATION_SERVICE;
    locationManager = (LocationManager)getSystemService(context);

    String provider = LocationManager.GPS_PROVIDER;
    Location location = locationManager.getLastKnownLocation(provider);

    updateWithNewLocation(location);
  }

  private void updateWithNewLocation(Location location) {
    String latLongString;
    TextView myLocationText; 
    myLocationText = (TextView)findViewById(R.id.myLocationText);
    if (location != null) {
      double lat = location.getLatitude();
      double lng = location.getLongitude();
      latLongString = "Lat:" + lat + "\nLong:" + lng;
    } else {
      latLongString = "No location found"; 
    }
    myLocationText.setText("Your Current Position is:\n" + 
                           latLongString);
  }

Может ли кто-нибудь помочь мне немного разобраться, как импортировать мое текущее местоположение в это уравнение, а затем отобразить расстояние, указанное в моем приложении? спасибо

Ответы [ 2 ]

1 голос
/ 04 марта 2011
public double calcdist()
            {
                int MILLION = 1000000;
                int EARTH_RADIUS_KM = 6371;

                double lat1 = la1 / MILLION;// latitude of location 1
            double lon1 = lo1 / MILLION; //longitude of location 1
            double lat2 = la2 / MILLION; //latitude of location 2
            double lon2 = lo2 / MILLION;//longitude of location 2

            double lat1Rad = Math.toRadians(lat1);
            double lat2Rad = Math.toRadians(lat2);
            double deltaLonRad = Math.toRadians(lon2 - lon1);

            double dist = Math.acos(Math.sin(lat1Rad) * Math.sin(lat2Rad) + Math.cos(lat1Rad) * Math.cos(lat2Rad)
                    * Math.cos(deltaLonRad))
                    * EARTH_RADIUS_KM;
            return dist;

 }

Вы можете использовать этот код, если вы уже получили широту и долготу обоих местоположений.

0 голосов
/ 04 марта 2011

Создать слушателя местоположения

Метод isAccurateForUse - это пользовательский метод, который просто проверяет точность местоположения.

Это должно работать:

public boolean locChanged = false;
public LocationManager locMgr = null;
public Location referenceL = null; // Your reference location
public Location currentKL = null; // Current known location
public Location currentLKL = null; // Current last known location

//Initialise the GPS listener
locMgr = (LocationManager) appCtx.getSystemService(Context.LOCATION_SERVICE);
locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, fixGpsListener);
currentLKL = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);

//Define the GPS listener
LocationListener fixGpsListener = new LocationListener()
{
    public void onLocationChanged(Location location)
    {
        locChanged = true;
        if (currentKL == null)
            currentKL = location;
        else if (isAccurateForUse())
        {
            currentLKL = currentKL;
            currentKL = location;
            updateDistance(meterToKilometer(currentKL.distanceTo(referenceL)));
        }
    }

    public void onProviderDisabled(String provider)
    {}

    public void onProviderEnabled(String provider)
    {}

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

currentKL.distanceTo (referenceL) >> дает расстояние в метрах

meterToKilometer >> переводит метры в километры

updateDistance >> этот метод берет строку и обновляет текстовое представление, которое показывает расстояние.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...