Вычислить минимальное пройденное расстояние от L Latlng за время T - PullRequest
0 голосов
/ 09 мая 2018

Мне нужны некоторые функции в моем приложении для Android / iOS, например, пользователь U отправляется в L местоположение, поэтому, когда U находится в 15 минутах от L место, где он / она получит Уведомление.

Что я пробовал до сих пор:

  1. Вызов API Google и получение времени в пути от текущего местоположения до местоположения L за определенный промежуток времени, когда я обнаружил, что оно очень близко от 15-минутного, я вызвал уведомление для пользователя ( U ) и прекратить вызывать API.
  2. Геозона L Расположение таким образом, что время в пути от входа в забор до места L должно быть очень близко к 15 минутам. Когда пользователь ( U ) входит в Geo-fence, я запускаю уведомление для пользователя ( U ) и удаляем Geo-fence.

Но для 1-ых методов Вызов Google API - неправильный способ достичь этого. Во втором методе проблема заключается в Мои местоположения не фиксированы, они могут варьироваться . Таким образом, радиус геозоны должен быть разным для каждого местоположения, поскольку время в пути для этого места различно.

По моему мнению, геозона - хорошее решение, но ее динамический радиус создает проблему.

Так есть ли другой способ добиться этого? Или мы можем исправить проблему с динамическим радиусом Geo-fence любым способом?

1 Ответ

0 голосов
/ 09 мая 2018

Для «динамического радиуса» геозоны вы можете использовать обходной путь: установите радиус геозоны на максимально возможный, чем тестируйте местоположение пользователя на обработчике GEOFENCE_TRANSITION_ENTER и делайте то, что вам нужно, только если фактический радиус меньше, чем вам нужно. Примерно так:

...
// Get the transition type.
int geofenceTransition = geofencingEvent.getGeofenceTransition();

// Test that the reported transition was of interest.
if (geofenceTransition == Geofence.GEOFENCE_TRANSITION_ENTER) {
    // start continuously calculate actual radius here
    // actualRadius = calcActualRadius();
    // if (actualRadius < RADIUS_FOR_YOUR_CONDITION) {
    //    // do what you need
    // }  
}
...
...