public void TestMaxZoom(View view)
        {
            CameraUpdate cameraUpdate = CameraUpdateFactory.ZoomBy(1.0f);

            if (null != hMap)
            {
                hMap.MoveCamera(cameraUpdate);
            }
        }
        public void OnClick(View v)
        {
            if (hMap == null)
            {
                Log.Warn(TAG, "map is null");
                return;
            }
            if (v.Id == Resource.Id.animateCamera)
            {
                CameraUpdate cameraUpdate = CameraUpdateFactory.NewLatLng(new LatLng(20, 120));
                Toast.MakeText(this, hMap.CameraPosition.Target.ToString(), ToastLength.Long).Show();
                hMap.AnimateCamera(cameraUpdate);
            }
            if (v.Id == Resource.Id.getCameraPosition)
            {
                CameraPosition position = hMap.CameraPosition;
                Toast.MakeText(ApplicationContext, position.ToString(), ToastLength.Long).Show();

                // Displays the maximum zoom level and minimum scaling level of the current camera.
                Log.Info(TAG, position.ToString());
                Log.Info(TAG, "MaxZoomLevel:" + hMap.MaxZoomLevel + " MinZoomLevel:" + hMap.MinZoomLevel);
            }
            if (v.Id == Resource.Id.moveCamera)
            {
                CameraPosition build        = new CameraPosition.Builder().Target(new LatLng(60, 60)).Build();
                CameraUpdate   cameraUpdate = CameraUpdateFactory.NewCameraPosition(build);
                Toast.MakeText(this, hMap.CameraPosition.ToString(), ToastLength.Long).Show();
                hMap.MoveCamera(cameraUpdate);
            }
            if (v.Id == Resource.Id.ZoomBy)
            {
                CameraUpdate cameraUpdate = CameraUpdateFactory.ZoomBy(2);
                Toast.MakeText(this, "amount = 2", ToastLength.Long).Show();
                hMap.MoveCamera(cameraUpdate);
            }
            if (v.Id == Resource.Id.newLatLngBounds)
            {
                LatLng       southwest    = new LatLng(30, 60);
                LatLng       northeast    = new LatLng(60, 120);
                LatLngBounds latLngBounds = new LatLngBounds(southwest, northeast);
                Toast.MakeText(this, "southwest =" + southwest.ToString() + " northeast=" + northeast.ToString() + " padding=2",
                               ToastLength.Long).Show();
                CameraUpdate cameraUpdate = CameraUpdateFactory.NewLatLngBounds(latLngBounds, 2);
                hMap.MoveCamera(cameraUpdate);
            }
            if (v.Id == Resource.Id.setCameraPosition)
            {
                LatLng         southwest      = new LatLng(30, 60);
                CameraPosition cameraPosition =
                    new CameraPosition.Builder().Target(southwest).Zoom(10).Bearing(2.0f).Tilt(2.5f).Build();
                Toast.MakeText(this, cameraPosition.ToString(), ToastLength.Long).Show();
                CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition(cameraPosition);
                hMap.MoveCamera(cameraUpdate);
            }
        }
        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();
        }