2014-07-24 3 views
0

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

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

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

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

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

ответ

1

Вы можете сохранить предыдущее местоположение в привилегированной переменной, а затем, когда местоположение изменяется рассчитать расстояние между текущей и предыдущей позиции, для этого вы можете использовать функцию 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], и вы можете делать с ним все, что хотите.

1

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

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

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

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

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