示例#1
0
        public override void OnMoveToRegionRequest(MoveToRegionMessage m)
        {
            if (_nativeMap == null)
            {
                return;
            }

            var span    = m.Span;
            var animate = m.Animate;

            span = span.ClampLatitude(85, -85);
            var ne     = new LatLng(span.Center.Latitude + span.LatitudeDegrees / 2, span.Center.Longitude + span.LongitudeDegrees / 2);
            var sw     = new LatLng(span.Center.Latitude - span.LatitudeDegrees / 2, span.Center.Longitude - span.LongitudeDegrees / 2);
            var update = GCameraUpdateFactory.NewLatLngBounds(new LatLngBounds(sw, ne), 0);

            try
            {
                if (animate)
                {
                    _nativeMap.AnimateCamera(update);
                }
                else
                {
                    _nativeMap.MoveCamera(update);
                }
            }
            catch (IllegalStateException exc)
            {
                System.Diagnostics.Debug.WriteLine("MoveToRegion exception: " + exc);
            }
        }
示例#2
0
        public static GCameraUpdate ToAndroid(this CameraUpdate self, float scaledDensity)
        {
            switch (self.UpdateType)
            {
            case CameraUpdateType.LatLng:
                return(GCameraUpdateFactory.NewLatLng(self.Position.ToLatLng()));

            case CameraUpdateType.LatLngZoom:
                return(GCameraUpdateFactory.NewLatLngZoom(self.Position.ToLatLng(), (float)self.Zoom));

            case CameraUpdateType.LatLngBounds:
                try
                {
                    var factory = GCameraUpdateFactory.NewLatLngBounds(self.Bounds.ToLatLngBounds(), (int)(self.Padding * scaledDensity));     // TODO: convert from px to pt. Is this collect? (looks like same iOS Maps)
                    return(factory);
                }
                catch
                {
                    return(null);
                }

            case CameraUpdateType.CameraPosition:
                return(GCameraUpdateFactory.NewCameraPosition(self.CameraPosition.ToAndroid()));

            default:
                throw new ArgumentException($"{nameof(self)} UpdateType is not supported.");
            }
        }