【问题标题】:Calculate minimum Traveled distance from L Latlng in T time计算 T 时间内从 L Latlng 的最小行进距离
【发布时间】:2018-05-09 06:47:16
【问题描述】:

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

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

  1. 调用 google API 并在特定时间间隔内获取从当前位置到 L 位置的旅行时间,当我发现它从 15 分钟开始非常接近时,我向用户触发了通知( U) 并停止调用 API。
  2. 地理围栏 L 位置,这样从进入围栏到 L 位置的旅行时间应该非常接近 15 分钟。当用户(U)进入地理围栏时,我触发了通知用户(U)并移除地理围栏。

但对于第一种方法,调用 google API 并不是实现这一目标的正确方法。 在第二种方法中,问题是我的位置不固定,它们可能会有所不同因此每个位置的地理围栏半径应该不同,因为每个位置的旅行时间不同。

在我看来,地理围栏是一个很好的解决方案,但它的动态半径会造成问题。

那么还有其他方法可以实现吗?或者我们可以通过任何方式解决地理围栏的动态半径问题?

【问题讨论】:

  • "但是对于第一种方法,调用 google API 并不是实现这一目标的正确方法。"为什么?
  • @sfarbac 根据我的说法,在特定的时间间隔调用 API 也会导致网络消耗和设备资源消耗,以及当用户没有足够的数据或没有数据时会发生什么。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    相关资源
    最近更新 更多