在T时间内计算L Latlng的最小行进距离

时间:2018-05-09 06:47:16

标签: android ios google-maps google-maps-android-api-2 geofencing

我想在我的Android / iOS应用程序中使用某些功能,即 U 用户正在前往 L 位置,所以当 U 为15分钟时远离 L 位置,他/她将获得一些通知。

到目前为止我尝试了什么:

  1. 在特定时间间隔内调用Google API并从当前位置获取行程时间到 L 位置,当我发现它距离15分钟非常近时,我触发了对用户的通知( U )并停止调用API。
  2. 地理围栏 L 位置,从进入围栏到 L 位置的行程时间,应该非常接近15分钟。当用户( U )进入地理围栏时,我触发了对用户的通知( U )并删除了地理围栏。
  3. 但对于第一种方法,调用google API并不是实现这一目标的正确方法。 在第二种方法中,问题是我的位置不固定,可能会有所不同因此,每个地点的地理围栏半径应该不同,因为该地点的旅行时间不同。

    根据我的说法,Geo-fence是一个很好的解决方案,但它的动态半径正在产生问题。

    那么还有其他方法可以实现吗?或者我们可以以任何方式解决Geo-fence的动态半径问题?

1 个答案:

答案 0 :(得分:0)

对于地理围栏"动态半径"您可以使用这样的解决方法:将地理围栏半径设置为最大可能,而不是在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
    // }  
}
...