Example #1
0
        /// <summary>
        /// A filter that should return a value to indicate which layers have been already been added
        /// </summary>
        /// <param name="layer"></param>
        /// <returns></returns>
        bool MapLayerDefinitionFilter(MapLayerDefinition layer)
        {
            Universe allowedUniverse = null;

            if (CurrentMap != null)
            {
                var  world     = CurrentMap.World;
                var  uni       = world != null ? world.Universe : null;
                bool csIsLocal = uni != null ? uni.HasLocalCoordinateSystems : false;

                if (CurrentMap.World != null && CurrentMap.World.Universe != null && CurrentMap.World.Universe.IsMultiWorld)
                {
                    allowedUniverse = CurrentMap.World.Universe;
                }

                var layerUniverse        = layer != null ? layer.Universe : null;
                var layerUniverseIsLocal = layerUniverse != null && layerUniverse.HasLocalCoordinateSystems;

                if (allowedUniverse != null && (layerUniverse == null || layerUniverse != allowedUniverse))
                {
                    // There is a specific universe involved
                    return(false);
                }

                if (csIsLocal != layerUniverseIsLocal)
                {
                    // Local/Geographic mismatch
                    return(false);
                }

                foreach (var layerViewModel in CurrentMap.Layers)
                {
                    if (layerViewModel.LayerDefinition != null && layerViewModel.LayerDefinition.ServiceProviderGroup.Equals(layer.ServiceProviderGroup) && layerViewModel.LayerDefinition.Name.Equals(layer.Name))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
            /// <summary>
            /// Creates the mapLayerDefinition
            /// </summary>
            /// <returns></returns>
            public async Task <MapLayerDefinition> ToLayerDefinition()
            {
                MapLayerDefinition result = null;
                var providers             = ServiceProviderManager.Instance.ServiceProviders;

                var provider = providers.FirstOrDefault(p => p.Name == ProviderName);

                if (provider != null)
                {
                    var mapService = provider.GetService <IMapService>();

                    var providerGroup = LayerReference.ServiceProviderGroup.ToServiceProviderGroup(provider);

                    if (providerGroup != null)
                    {
                        var mapLayerRequest = new GetMapLayerDefinitionsRequest()
                        {
                            GroupNames = new string[] { providerGroup.GroupName },
                            GroupTypes = new ServiceProviderGroupType[] { providerGroup.GroupType }
                        };

                        var mapLayers = await mapService.GetMapLayerDefinitionsAsync(mapLayerRequest);

                        if (mapLayers != null)
                        {
                            result = mapLayers.MapLayerDefinitions.FirstOrDefault(l => l.Name == LayerReference.Name);
                            if (result != null)
                            {
                                result.DefaultVisible = IsOn;
                            }
                        }
                    }
                }

                return(result);
            }
 /// <summary>
 /// Constructor for MapLayerViewModel
 /// </summary>
 /// <param name="layer"></param>
 public LiteUserMapLayerStorageModel(MapLayerDefinition layer, bool isOn)
 {
     ProviderName   = layer.ServiceProvider.Name;
     LayerReference = new XYServiceProviderDatumReferenceDto(layer.ServiceProviderGroup, layer.Name);
     IsOn           = isOn;
 }