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; } }
public void OnScrollDown(View view) { if (!CheckReady()) { return; } ChangeCamera(CameraUpdateFactory.ScrollBy(0, SCROLL_BY_PX)); }
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(); }