/// <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; }