Гео-точка против местоположения

Это может быть нубский вопрос, но я не уверен на 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(), чтобы получить расстояние между двумя точками.

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


person user758610    schedule 18.05.2011    source источник
comment
провайдером является GPS или сеть... GPS точен, но может занять некоторое время, а сеть противоположна ему... Да, вам нужно установить провайдера, чтобы получить исправление GPS.   -  person Farhan    schedule 18.05.2011


Ответы (3)


Не совсем

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

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

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

person Reno    schedule 18.05.2011
comment
хорошо, поэтому мне нужно определить диспетчер местоположения раньше - или я могу добавить этот LocationManager.GPS_PROVIDER непосредственно в скобки, например Location loc = new Location(LocationManager.GPS_PROVIDER)? - person user758610; 18.05.2011
comment
Да, вам не нужен LocationManager. и да, вот как вы это делаете. - person Reno; 18.05.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.

person ol_v_er    schedule 18.05.2011
comment
Если ответ вас устроил, отметьте свой вопрос как решенный. - person ol_v_er; 20.05.2011

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;
    }
person Frank Yin    schedule 10.07.2012