Карта Android Обновление местоположения на сервере, когда разница между текущим местоположением и последним местоположением составляет x метров

Я хотел обновить сервер с помощью latlong текущего местоположения, когда есть разница в x метрах между текущим местоположением и предыдущим местоположением.

У меня есть приложение, в котором я хотел отслеживать движение транспортного средства, поэтому водитель, который использует это приложение внутри транспортного средства, автоматически обновляет свое текущее местоположение, когда существует разница в x метров между текущим положением кабины и ранее сохраненным местоположением. Таким образом, другие пользователи смогут найти этот драйвер, где именно он находится. (Так что в этом случае я должен запустить поток для автоматического запроса обновления текущего местоположения или чего-то еще).

Как узнать, является ли расстояние между двумя точками latlong, чтобы я мог узнать, составляет ли разница между текущим местоположением и ранее сохраненным местоположением X метров.

Если я использую функцию requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener), я смогу предоставить minDistance как X метров, и это сделает работу, но не дает точного обновления на сервер.

Я рассмотрел этот вопрос здесь, но поскольку я я новичок не имел четкого представления. Поэтому я был бы признателен, если кто-нибудь поможет, как я могу этого добиться.


person Naveen Kumar    schedule 24.07.2014    source источник


Ответы (2)


Вы можете использовать API определения местоположения сервисов Google Play. Прочитайте документацию о том, как получать обновления местоположения здесь.

При создании LocationRequest вы можете указать, как часто вы хотите получать обновления, используя setInterval и setFastestInterval или минимальное расстояние между обновлениями, используя setSmallestDisplayments.

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

Если вы хотите проверить, превышает ли расстояние между двумя местоположениями указанное вами минимальное расстояние, вы можете сделать это с помощью Location.distanceBetween.

Информацию о том, как сохранить данные о местоположении в общих настройках, см. в этом ответе.

person rubenlop88    schedule 24.07.2014

Вы можете сохранить предыдущее местоположение в переменной предпочтения, а затем всякий раз, когда местоположение изменяется, вы вычисляете расстояние между текущим и предыдущим местоположением, для этого вы можете использовать функцию DistanceBetween в вашем LocationListener :

@Override
    public void onLocationChanged(Location loc) {
....
final float[] results = new float[1];
Location.distanceBetween(previous.lat, previous.lng, loc.lat, loc.lng, results);
...
}

И теперь у вас есть расстояние в метрах, сохраненное в результатах [0], и вы можете делать с ним все, что хотите.

person user3640048    schedule 24.07.2014