Гео Поинт против Местоположения - PullRequest
2 голосов
/ 18 мая 2011

Возможно, это нубский вопрос, но я не уверен на 100% в этом.

Как я могу сделать объект местоположения, используя географические точки?Я хочу использовать это, чтобы получить расстояние между двумя точками.Я уже нашел поток, в котором написано

Location loc1 = new Location("Location"); 
loc.setLatitude(geoPoint.getLatitudeE6);
loc.setLongitude(geoPoint.getLongitudeE6);

Location loc2 = new Location("Location2");
loc2.setLatitude(geoPoint.getLatitudeE6);
loc2.setLongitude(geoPoint.getLongitudeE6);

, а затем я использовал бы distanceTo (), чтобы получить расстояние между двумя точками.

Мои вопросы Для чего нужно имя провайдера?... new Location ("Что это здесь ???"). Так нужно ли мне определять поставщика раньше или что-то еще?Я хочу использовать этот код в for () для вычисления между несколькими GeoPoints.И кстати - я должен преобразовать значения E6 обратно в нормальное состояние?

Ответы [ 3 ]

2 голосов
/ 18 мая 2011

Не совсем

loc.setLatitude () принимает двойную широту. Итак, правильный код:

  loc.setLatitude( geoPoint.getLatitudeE6() / 1E6);

Конструктор Location () принимает имя используемого поставщика GPS. Это может быть LocationManager.GPS_PROVIDER или NETWORK_PROVIDER среди других значений

1 голос
/ 10 июля 2012
Log.i("MapView", "Map distance to mark (in meters): " + myLocation.distanceTo(GeoToLocation(point)) + "m");

затем

public Location GeoToLocation(GeoPoint gp) {
        Location location = new Location("dummyProvider");
        location.setLatitude(gp.getLatitudeE6()/1E6);
        location.setLongitude(gp.getLongitudeE6()/1E6);
        return location;
    }
1 голос
/ 18 мая 2011

Чтобы получить расстояние между двумя точками, вы можете использовать класс Location и, более точно, статический метод distanceBetween .

В документе достаточно ясно, чтоделает, но здесь быстрый пример кода:

float[] results = new float[3];
Location.distanceBetween(destLatitude, destLongitude, mCurrentLocation.getLatitude(), mCurrentLocation.getLongitude(), results);
// result in meters, convert it in km
String distance = String.valueOf(Math.round(results[0] / 1000)) + " km");

Для преобразования из минуты / секунды в градусы вы можете использовать метод convert класса Location.

...