Пример #1
0
        public override void OnAnimateCameraRequest(CameraUpdateMessage m)
        {
            _isCancelAnimate = _isAnimate;

            CATransaction.Begin();

            if (m.Duration.HasValue)
            {
                CATransaction.AnimationDuration = m.Duration.Value.TotalSeconds;
            }

            CATransaction.CompletionBlock = () =>
            {
                _isAnimate = false;

                if (_isCancelAnimate)
                {
                    m.Callback.OnCanceled();
                }
                else
                {
                    m.Callback.OnFinished();
                }
                _isCancelAnimate = false;
            };
            _nativeMap.Animate(m.Update.ToIOS());

            _isAnimate = true;
            _raiseWillMoveFromMethod = true;
            CATransaction.Commit();
        }
        public override void OnMoveCameraRequest(CameraUpdateMessage m)
        {
            _nativeMap.MoveCamera(m.Update.ToIOS());

            // TODO WORKARROUND for CameraPositionChanged does not raise when call MoveCamera with CameraUpdate.FitBounds(issue #189)
            if (m.Update.UpdateType == CameraUpdateType.LatLngBounds)
            {
                _raiseCameraPositionChanged?.Invoke();
            }

            m.Callback.OnFinished();
        }
Пример #3
0
        public async override void OnAnimateCameraRequest(CameraUpdateMessage m)
        {
            bool result = false;

            switch (m.Update.UpdateType)
            {
            case CameraUpdateType.LatLng:
                result = await _nativeMap.TrySetViewAsync(m.Update.Position.ToGeopoint());

                break;

            case CameraUpdateType.LatLngZoom:
                result = await _nativeMap.TrySetViewAsync(m.Update.Position.ToGeopoint(), m.Update.Zoom);

                break;

            case CameraUpdateType.LatLngBounds:
                _nativeMap.Heading = 0d;
                result             = await _nativeMap.TrySetViewBoundsAsync(
                    m.Update.Bounds.ToGeoboundingBox(),
                    new Windows.UI.Xaml.Thickness(m.Update.Padding),
                    MapAnimationKind.Bow);

                break;

            case CameraUpdateType.CameraPosition:
                result = await _nativeMap.TrySetViewAsync(
                    m.Update.CameraPosition.Target.ToGeopoint(),
                    m.Update.CameraPosition.Zoom,
                    m.Update.CameraPosition.Bearing,
                    m.Update.CameraPosition.Tilt,
                    MapAnimationKind.Bow);

                break;

            default:
                break;
            }

            if (result)
            {
                m.Callback.OnFinished();
            }
            else
            {
                m.Callback.OnCanceled();
            }
        }
Пример #4
0
        public override void OnAnimateCameraRequest(CameraUpdateMessage m)
        {
            var update   = m.Update.ToAndroid(ScaledDensity);
            var callback = new DelegateCancelableCallback(
                () => m.Callback.OnFinished(),
                () => m.Callback.OnCanceled());

            if (m.Duration.HasValue)
            {
                _nativeMap.AnimateCamera(update, (int)m.Duration.Value.TotalMilliseconds, callback);
            }
            else
            {
                _nativeMap.AnimateCamera(update, callback);
            }
        }
Пример #5
0
        public async override void OnMoveCameraRequest(CameraUpdateMessage m)
        {
            switch (m.Update.UpdateType)
            {
            case CameraUpdateType.LatLng:
                _nativeMap.Center = m.Update.Position.ToGeopoint();
                break;

            case CameraUpdateType.LatLngZoom:
                _nativeMap.Center    = m.Update.Position.ToGeopoint();
                _nativeMap.ZoomLevel = m.Update.Zoom;
                break;

            case CameraUpdateType.LatLngBounds:
                _nativeMap.Heading = 0d;
                await _nativeMap.TrySetViewBoundsAsync(
                    m.Update.Bounds.ToGeoboundingBox(),
                    new Windows.UI.Xaml.Thickness(m.Update.Padding),
                    MapAnimationKind.None);

                break;

            case CameraUpdateType.CameraPosition:
                await _nativeMap.TrySetViewAsync(
                    m.Update.CameraPosition.Target.ToGeopoint(),
                    m.Update.CameraPosition.Zoom,
                    m.Update.CameraPosition.Bearing,
                    m.Update.CameraPosition.Tilt,
                    MapAnimationKind.None);

                break;

            default:
                break;
            }

            m.Callback.OnFinished();
        }
Пример #6
0
 void SendAnimateCamera(CameraUpdateMessage message)
 {
     OnAnimateCamera?.Invoke(message);
 }
Пример #7
0
 void SendMoveCamera(CameraUpdateMessage message)
 {
     OnMoveCamera?.Invoke(message);
 }
Пример #8
0
 public override void OnMoveCameraRequest(CameraUpdateMessage m)
 {
     MoveCamera(m.Update);
     m.Callback.OnFinished();
 }
Пример #9
0
 public abstract void OnAnimateCameraRequest(CameraUpdateMessage m);
 public override void OnMoveCameraRequest(CameraUpdateMessage m)
 {
     _nativeMap.MoveCamera(m.Update.ToAndroid(ScaledDensity));
     m.Callback.OnFinished();
 }