Esempio n. 1
0
        public HomePage()
        {
            App.Current.Resources["PositionOrigin"] = new Point(0.5, 0.5);
            this.InitializeComponent();
            Map.MapServiceToken = Constants.MapServiceToken;
            var messenger = Mvx.Resolve <IMvxMessenger>();

            UserInfo.Tapped += (sender, args) =>
            {
                Debug.WriteLine("position tapped");
                args.Handled = true;
            };

            _locationToken = messenger.Subscribe <LocationMessage>(async message =>
            {
                if (!message.IsError)
                {
                    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                    {
                        var geoPoint = new Geopoint(new BasicGeoposition {
                            Latitude = message.Lat, Longitude = message.Lng
                        });
                        await InitializeUserPositionIfNeeded(geoPoint, message.Accuracy);

                        var vals = GeoHelper.CalculatePolygon(message.Lat, message.Lng, message.Accuracy ?? 0).Select(p => p.ToNative().Position);
                        _accuracyPolygon.Path = new Geopath(vals);
                    });
                }
            });
        }
Esempio n. 2
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            _locationTracker = Mvx.Resolve <ILocationTrackerService>();
            _locationTracker.Subscribe();

            var messenger = Mvx.Resolve <IMvxMessenger>();

            _locationToken = messenger.Subscribe <LocationMessage>(message =>
            {
                if (!message.IsError)
                {
                    var coords = new GeoCoordinate(message.Lat, message.Lng)
                    {
                        HorizontalAccuracy = message.Accuracy ?? 0
                    };
                    InitializeUserPositionIfNeeded(coords);
                    ShowLocation(coords);

                    AddressPushPin.Content       = message.Address;
                    AddressPushPin.GeoCoordinate = coords;
                    if (message.Accuracy.HasValue)
                    {
                        var coordinates         = GeoHelper.CalculatePolygon(coords.Latitude, coords.Longitude, coords.HorizontalAccuracy).Select(c => c.ToNative());
                        var geoCoordsCollection = new GeoCoordinateCollection();

                        foreach (var coord in coordinates)
                        {
                            geoCoordsCollection.Add(coord);
                        }
                        _mapPolygon.Path = geoCoordsCollection;
                    }
                }
            });
        }