/// <summary>
        /// Constructs a LiteMapViewModel for a specified definition, interactionHandler, world and default
        /// envelope.
        /// </summary>
        /// <param name="messenger">The messenger to use for exchanging messages</param>
        /// <param name="definition">The definition to use for determining layers</param>
        /// <param name="interactionHandler">The interaction handler that contains the available interaction modes</param>
        /// <param name="epsgCSs">The spatialReference IDs available for display of Coords</param>
        /// <param name="world">The world to use (should match with definition's universe)</param>
        /// <param name="envelope">The default envelope to use</param>
        public LiteMapViewModel(Messenger messenger, MapDefinition definition, bool isUserMap, MapInteractionHandler interactionHandler, EpsgCoordinateSystemReferenceCollection epsgCSs, World world = null, Envelope envelope = null, Feature owner = null)
            : base(messenger, definition, interactionHandler, world, envelope, owner)
        {
            EpsgCoordinateSystems = epsgCSs;

            SetMapType(definition, isUserMap);

            SetupCommands();

            SetupExport();

            // Setup styles
            SetupSelectionStyles();
            SetupHighlightStyles();
        }
 public LiteFactibilidadViewModel(Messenger messenger, MapDefinition definition, MapInteractionHandler interactionHandler, EpsgCoordinateSystemReferenceCollection epsgCSs, World world = null, Envelope envelope = null, Feature owner = null)
     : base(messenger, definition, false, interactionHandler, epsgCSs, world, envelope, owner)
 {
 }
 /// <summary>
 /// Constructs a LiteMapViewModel for a specified definition, world and default envelope.
 /// </summary>
 /// <param name="messenger">The messenger to use for exchanging messages</param>
 /// <param name="definition">The definition to use for determining layers</param>
 /// <param name="epsgCSs">The spatialReference IDs available for display of Coords</param>
 /// <param name="world">The world to use (should match with definition's universe)</param>
 /// <param name="envelope">The default envelope to use</param>
 public LiteMapViewModel(Messenger messenger, MapDefinition definition, bool isUserMap, EpsgCoordinateSystemReferenceCollection epsgCSs, World world = null, Envelope envelope = null, Feature owner = null)
     : this(messenger, definition, isUserMap, null, epsgCSs, world, envelope, owner)
 {
 }
        /// <summary>
        /// Converts the storage model to a MapViewModel that can be used within Lite.
        /// </summary>
        /// <param name="messenger">The messenger the ViewModel should be connected to</param>
        /// <returns>A LiteMapViewModel</returns>
        public async Task <LiteMapViewModel> ToUserMapViewModel(LiteMapsViewModel maps, Messenger messenger, EpsgCoordinateSystemReferenceCollection epsgCoordinateSystems)
        {
            LiteMapViewModel result = null;

            var layers = new List <MapLayerDefinition>();

            try
            {
                foreach (var layer in this.Layers)
                {
                    var layerDefinition = await layer.ToLayerDefinition();

                    if (layerDefinition != null)
                    {
                        layers.Add(layerDefinition);
                    }
                }

                if (layers.Count > 0)
                {
                    Envelope defaultEnvelope = DefaultEnvelope != null?DefaultEnvelope.ToEnvelope() : null;

                    var universe      = Universe.Default;
                    var mapDefinition = new MapDefinition(ExternalName, ExternalName, universe, defaultEnvelope);

                    foreach (var layer in layers)
                    {
                        mapDefinition.Layers.Add(layer);
                    }

                    result = new LiteMapViewModel(messenger, mapDefinition, true, epsgCoordinateSystems, World.Default);
                }
            }
            catch
            {
                // Defend against issues upon serializing
            }

            return(result);
        }