输入地理围栏不会打开 One Geofence StateChanged

enter on geofence doens't open the OnGeofenceStateChanged

我正在关注 guide here

当一切都完成后(我创建了 Geofence 并将其放在地图上),如果我进入 Geofence 区域导航到它或在我的位置创建它没有任何反应。

没有调用OnGeofenceStateChanged事件,所以我不知道如何管理进入Geofence区域事件。

我做错了什么?

代码

private void DrawLOCNAME(double lat, double lon, string LOCNAME)
{    
    // Set the fence ID.
    string fenceId = "LOCNAME";

    // Define the fence location and radius.
    BasicGeoposition position;
    position.Latitude = lat;
    position.Longitude = lon;
    position.Altitude = 0.0;

    // Set a circular region for the geofence.
    Geocircle geocircle = new Geocircle(position, 2000);

    // Set the monitored states.
    MonitoredGeofenceStates monitoredStates =
        MonitoredGeofenceStates.Entered |
        MonitoredGeofenceStates.Exited |
        MonitoredGeofenceStates.Removed;

    // Set how long you need to be in geofence for the enter event to fire.
    TimeSpan dwellTime = TimeSpan.FromSeconds(1);

    //non so se è giusto ssettarlo a zero così
    TimeSpan duration = TimeSpan.FromDays(1);

    // Set up the start time of the geofence.
    DateTimeOffset startTime = DateTime.Now;

    // Create the geofence.
    Geofence geofence = new Geofence(fenceId, geocircle, monitoredStates, false, dwellTime, startTime, duration);

    // Register for state change events.
    GeofenceMonitor.Current.GeofenceStateChanged += OnGeofenceStateChanged;
    //GeofenceMonitor.Current.StatusChanged += OnGeofenceStatusChanged;

    // Center the map over the POI.
    Mappe.Center = snPoint;
    //Mappe.ZoomLevel = 14;
}

public async void OnGeofenceStateChanged(GeofenceMonitor sender, object args)
{
    var reports = sender.ReadReports();

    //BLABLABLA IS NOT IMPORTANT 

    ------->I'M NOT ABLE TO ENTER HERE<-------
}

您必须确保将您创建的 Geofence 添加到 GeofenceMonitor.Current.Geofences 集合中,以便监视器知道它。从文档中看不是很清楚,但这是必须的地方。同样根据示例(示例将对集合的引用存储在 geofences 字段中并使用它而不是直接使用 GeofenceMonitor.Current.Geofences),建议将添加到列表中的内容包装在异常处理程序中,如果监视器无法添加它:

try
{
    GeofenceMonitor.Current.Geofences.Add( geofence );
}
catch
{
    //adding failed
}

我现在已发送拉取请求来更新文档以说明 Geofence 注册。