Exemplo n.º 1
0
        private void DisableBasemapLayer()
        {
            RemoveBasemapLayer(_baseLayer);

            _optionsAction.Enabled = false;
            _baseLayer             = null;
        }
Exemplo n.º 2
0
        private void EnableBasemapLayer(ServiceProvider serviceProvider)
        {
            if (_baseLayer == null)
            {
                // Need to first initialize and add the basemap layer synchronously (it will fail if done in another thread).
                var tempImageData = new InRamImageData(Resources.nodata, new Extent(1, 1, 2, 2));

                _baseLayer = new WebMapImageLayer()
                {
                    LegendText = Resources.Legend_Title,
                    Projection = App.Map.Projection
                };
                _baseLayer.WebMapName = serviceProvider.Name;
                if (serviceProvider is WmtsServiceProvider wmtsServiceProvider)
                {
                    _baseLayer.WebMapUrl = wmtsServiceProvider.CapabilitiesUrl;
                }
                _baseLayer.RemoveItem += BaseMapLayerRemoveItem;
                App.Map.Layers.Insert(0, _baseLayer);
            }
            else
            {
                if (_baseLayer.WebMapName != serviceProvider.Name)
                {
                    _baseLayer.WebMapName = serviceProvider.Name;
                }
            }
        }
Exemplo n.º 3
0
        private void BaseMapLayerRemoveItem(object sender, EventArgs e)
        {
            if (_baseLayer != null)
            {
                _baseLayer.RemoveItem -= BaseMapLayerRemoveItem;
            }

            _baseLayer = null;
            _serviceDropDown.SelectedItem = _emptyProvider;
        }
Exemplo n.º 4
0
        /// <summary>
        /// Deserializes the WebMap settings and loads the corresponding basemap.
        /// </summary>
        /// <param name="sender">Sender that raised the event.</param>
        /// <param name="e">The event args.</param>
        private void SerializationManagerDeserializing(object sender, SerializingEventArgs e)
        {
            try
            {
                if (_baseLayer != null)
                {
                    // disable BaseMap because we might be loading a project that doesn't have a basemap
                    DisableBasemapLayer();
                    _serviceDropDown.SelectedItem = _emptyProvider;
                }

                _baseLayer = (WebMapImageLayer)App.Map.MapFrame.GetAllLayers().FirstOrDefault(layer => layer.LegendText == Resources.Legend_Title);
                if (_baseLayer != null)
                {
                    //_baseLayer.Projection = _webMercProj; // changed by jany_(2015-07-09) set the projection because if it is not set we produce a cross thread exception when DotSpatial tries to show the projection dialog
                    var item = _serviceDropDown.Items.OfType <ServiceProvider>().FirstOrDefault(p => p.Name.Equals(_baseLayer.WebMapName, StringComparison.InvariantCultureIgnoreCase));
                    if (item == null)
                    {
                        if (_baseLayer.WebMapUrl?.ToLower().Contains("wmts") == true)
                        {
                            item = _serviceDropDown.Items.OfType <ServiceProvider>().FirstOrDefault(p => p.Name.Equals("Wmts", StringComparison.InvariantCultureIgnoreCase));
                            if (item is WmtsServiceProvider wmtsServiceProvider)
                            {
                                wmtsServiceProvider.Name            = _baseLayer.WebMapName;
                                wmtsServiceProvider.CapabilitiesUrl = _baseLayer.WebMapUrl;
                            }
                        }
                    }
                    // hack: need to set provider to original object, not a new one.
                    if (item != null)
                    {
                        _ignoreServiceChanged         = true;
                        _serviceDropDown.SelectedItem = item;
                        _ignoreServiceChanged         = false;
                        if (CurrentProvider != null)
                        {
                            EnableBasemapFetching(CurrentProvider);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.Print(ex.StackTrace);
            }
        }