コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
        private void OnFenceRemoved(FenceRemovedEventArgs args)
        {
            var handler = FenceRemoved;

            if (handler != null)
            {
                handler(this, args);
            }
        }
コード例 #3
0
 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);
     });
 }