Ejemplo n.º 1
0
        void HandlePaneStateChanged(InfoPane.State state)
        {
            if (map == null)
            {
                return;
            }
            var time    = Resources.GetInteger(Android.Resource.Integer.ConfigShortAnimTime);
            var enabled = state != InfoPane.State.FullyOpened;

            map.UiSettings.ScrollGesturesEnabled = enabled;
            map.UiSettings.ZoomGesturesEnabled   = enabled;
            if (state == InfoPane.State.FullyOpened && currentShownMarker != null)
            {
                oldPosition = map.CameraPosition;
                var destX        = mapFragment.Width / 2;
                var destY        = (mapFragment.Height - pane.Height) / 2;
                var currentPoint = map.Projection.ToScreenLocation(currentShownMarker.Position);
                var scroll       = CameraUpdateFactory.ScrollBy(-destX + currentPoint.X, -destY + currentPoint.Y);
                map.AnimateCamera(scroll, time, null);
            }
            else if (oldPosition != null)
            {
                map.AnimateCamera(CameraUpdateFactory.NewCameraPosition(oldPosition), time, null);
                oldPosition = null;
            }
        }
Ejemplo n.º 2
0
        public void OnScrollDown(View view)
        {
            if (!CheckReady())
            {
                return;
            }

            ChangeCamera(CameraUpdateFactory.ScrollBy(0, SCROLL_BY_PX));
        }
Ejemplo n.º 3
0
        public void OnScrollRight(View view)
        {
            if (!CheckReady())
            {
                return;
            }

            ChangeCamera(CameraUpdateFactory.ScrollBy(SCROLL_BY_PX, 0));
        }
        public void InitializeBinding()
        {
            var set = this.CreateBindingSet <OrderMapFragment, MapViewModel>();

            TouchableMap.Surface.Touched += (sender, e) =>
            {
                switch (e.Action)
                {
                case MotionEventActions.Down:
                    CancelAddressSearch();
                    break;

                case MotionEventActions.Move:
                    CancelAddressSearch();
                    break;

                default:
                    _lockGeocoding = false;
                    break;
                }
            };

            TouchableMap.Surface.MoveBy = (deltaX, deltaY) =>
            {
                TouchableMap.Map.MoveCamera(CameraUpdateFactory.ScrollBy(deltaX, deltaY));
            };

            TouchableMap.Surface.ZoomBy = (animate, zoomByAmount) =>
            {
                if (animate)
                {
                    TouchableMap.Map.AnimateCamera(CameraUpdateFactory.ZoomBy(zoomByAmount));
                }
                else
                {
                    TouchableMap.Map.MoveCamera(CameraUpdateFactory.ZoomBy(zoomByAmount));
                }
            };

            Observable
            .FromEventPattern <GoogleMap.CameraChangeEventArgs>(Map, "CameraChange")
            .Do(_ =>
            {
                if (!_bypassCameraChangeEvent)
                {
                    ViewModel.DisableBooking();
                }
            })
            .Throttle(TimeSpan.FromMilliseconds(500))
            .ObserveOn(SynchronizationContext.Current)
            .Subscribe(OnCameraChanged)
            .DisposeWith(_subscriptions);

            set.Bind()
            .For(v => v.AddressSelectionMode)
            .To(vm => vm.AddressSelectionMode);

            set.Bind()
            .For(v => v.PickupAddress)
            .To(vm => vm.PickupAddress);

            set.Bind()
            .For(v => v.DestinationAddress)
            .To(vm => vm.DestinationAddress);

            set.Bind()
            .For(v => v.AvailableVehicles)
            .To(vm => vm.AvailableVehicles);

            set.Apply();
        }