private void HandleGeofenceStateChanged(GeofenceMonitor monitor, Object o) { // Iterate over and process the accumulated reports var reports = monitor.ReadReports(); foreach (var report in reports) { switch (report.NewState) { case GeofenceState.Entered: case GeofenceState.Exited: var updateArgs = new FenceUpdateEventArgs { FenceId = report.Geofence.Id, Reason = report.NewState.ToString(), Position = report.Geoposition.Coordinate.Point.Position, Timestamp = report.Geoposition.Coordinate.Timestamp }; OnFenceUpdated(updateArgs); break; case GeofenceState.Removed: var removedArgs = new FenceRemovedEventArgs { FenceId = report.Geofence.Id, WhyRemoved = report.RemovalReason.ToString() }; OnFenceRemoved(removedArgs); break; } } }
private void OnFenceRemoved(FenceRemovedEventArgs args) { var handler = FenceRemoved; if (handler != null) { handler(this, args); } }
private async void HandleGeofenceHelperFenceRemoved(Object sender, FenceRemovedEventArgs args) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => { RemoveGeofenceFromMap(args.FenceId); var fenceUpdateMessage = String.Format("Fence {0} removed - {1}", args.FenceId, args.WhyRemoved); await ShowMessage(fenceUpdateMessage); }); }