Esempio n. 1
0
        public bool AddDatasource(IDatasource ds, string layerName = "")
        {
            int addedCount = 0;

            var layers = _context.Map.Layers;

            foreach (var layer in ds.GetLayers())
            {
                // projection mistmatch testing
                var newLayer = TestProjectionMismatch(layer, out _aborted);

                if (_aborted)
                {
                    return(false);
                }

                if (newLayer == null)
                {
                    continue;
                }

                // ask plugins if they don't object
                var args = new DatasourceCancelEventArgs(newLayer);
                _broadcaster.BroadcastEvent(p => p.BeforeLayerAdded_, _context.Map, args);

                if (args.Cancel)
                {
                    return(false);
                }

                int layerHandle = layers.Add(newLayer);
                if (layerHandle != -1)
                {
                    var ll = layers.ItemByHandle(layerHandle);
                    ll.Name = string.IsNullOrWhiteSpace(layerName) ? layer.Name : layerName;

                    addedCount++;
                    _lastLayerHandle = layerHandle;
                }
            }

            return(addedCount > 0); // currently at least one should be success to return success
        }
Esempio n. 2
0
        /// <summary>
        /// Performs actions necessary before adding layer to the map.
        /// </summary>
        private void BeforeLayerAdded(IMuteMap map, DatasourceCancelEventArgs e)
        {
            var raster = e.Datasource as IRasterSource;

            if (raster != null)
            {
                if (!UpdateOverviews(raster))
                {
                    e.Cancel = true;
                }
            }

            var fs = e.Datasource as IFeatureSet;

            if (fs != null)
            {
                if (!UpdateSpatialIndex(fs))
                {
                    e.Cancel = true;
                }
            }
        }