示例#1
0
        private void deleteSelectedBaseMap(object sender, MessageBoxClosedArgs e)
        {
            if (e.Result != MessageBoxResult.OK)
            {
                return;
            }

            BaseMapInfo currentSelectedBaseMap = BaseMapsList.SelectedItem as BaseMapInfo;

            if (currentSelectedBaseMap == null)
            {
                return;
            }

            int currIndex = BaseMaps.IndexOf(currentSelectedBaseMap);

            BaseMaps.Remove(currentSelectedBaseMap);
            if (currIndex > BaseMaps.Count - 1) // if last item is being deleted
            {
                currIndex = BaseMaps.Count - 1;
            }

            if (currIndex > -1) // select the next item in the list
            {
                BaseMapsList.SelectedIndex = currIndex;
            }
        }
        public DataSource CreateDataSourceForBaseMapType(BaseMapInfo baseMapInfo)
        {
            DataSource dataSource = CreateDataSourceForBaseMapType(baseMapInfo.BaseMapType);

            if (baseMapInfo.BaseMapType == BaseMapType.ArcGISServer)
            {
                ((ArcGISServerDataSource)dataSource).ProxyUrl = baseMapInfo.ProxyUrl;
            }

            return(dataSource);
        }
        internal void SelectBaseMap(BaseMapInfo baseMap)
        {
            if (baseMap == null)
            {
                throw new ArgumentNullException("baseMap");
            }

            if (BaseMapsList != null)
            {
                BaseMapsList.SelectedItem = baseMap;
            }
        }
        private void BaseMapList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            BaseMapInfo baseMapInfo = BaseMapsList.SelectedItem as BaseMapInfo;

            if (baseMapInfo == null)
            {
                return;
            }
            OnBaseMapChanged(new BaseMapChangedEventArgs()
            {
                BaseMapInfo = baseMapInfo
            });
        }
示例#5
0
        private void onAddNewBaseMapCommand(object parameter)
        {
            if (BaseMaps == null || BaseMapsList == null)
            {
                return;
            }

            BaseMapInfo newBaseMap = null;
            // Clone current selected base map
            BaseMapInfo currentSelectedBaseMap = BaseMapsList.SelectedItem as BaseMapInfo;

            if (currentSelectedBaseMap == null)
            {
                currentSelectedBaseMap = BaseMaps.FirstOrDefault();
            }
            if (currentSelectedBaseMap != null)
            {
                newBaseMap = new BaseMapInfo()
                {
                    BaseMapType    = currentSelectedBaseMap.BaseMapType,
                    DisplayName    = ESRI.ArcGIS.Mapping.Controls.Resources.Strings.NewBasemap,
                    ThumbnailImage = currentSelectedBaseMap.ThumbnailImage,
                    BingMapsAppID  = BingMapsAppID
                };
                if (currentSelectedBaseMap.BaseMapType == BaseMapType.BingMaps ||
                    currentSelectedBaseMap.BaseMapType == BaseMapType.OpenStreetMap)
                {
                    // Keep same name (needed)
                    newBaseMap.Name = currentSelectedBaseMap.Name;
                    newBaseMap.Url  = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";
                }
                else
                {
                    newBaseMap.Name = Guid.NewGuid().ToString("N"); // needs to be unique for AGS
                    newBaseMap.Url  = currentSelectedBaseMap.Url;
                }
            }
            else
            {
                newBaseMap = new BaseMapInfo()
                {
                    BaseMapType    = BaseMapType.ArcGISServer,
                    Name           = Guid.NewGuid().ToString("N"), // needs to be unique for AGS
                    DisplayName    = ESRI.ArcGIS.Mapping.Controls.Resources.Strings.NewBasemap,
                    ThumbnailImage = "Images/basemaps/agol_imagery.png",
                    Url            = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
                };
            }
            BaseMaps.Add(newBaseMap);
            BaseMapsList.SelectedItem = newBaseMap;
        }
示例#6
0
        public override Client.TiledMapServiceLayer CreateBaseMapLayer(BaseMapInfo baseMapInfo)
        {
            ArcGISTiledMapServiceLayer agsLayer = new ArcGISTiledMapServiceLayer()
            {
                Url = baseMapInfo.Url
            };

            // Apply proxy if necessary
            if (baseMapInfo.UseProxy)
            {
                agsLayer.ProxyURL = ProxyUrl;
                LayerExtensions.SetUsesProxy(agsLayer, true);
            }

            return(agsLayer);
        }
        public override void OnApplyTemplate()
        {
            if (ConfigureButton != null)
            {
                ConfigureButton.Click -= ConfigureButton_Click;
            }

            if (BaseMapsList != null)
            {
                BaseMapsList.SelectionChanged -= BaseMapList_SelectionChanged;
            }

            base.OnApplyTemplate();

            BaseMapsList = GetTemplateChild(PART_BASEMAPSLIST) as ListBox;
            BaseMaps     = BaseMaps ?? getBaseMapsFromView();
            if (BaseMapsList != null)
            {
                if (BaseMaps != null)
                {
                    ObservableCollection <BaseMapInfo> filteredBasemaps = FilterBingBasemaps();
                    BaseMapsList.ItemsSource = filteredBasemaps;
                    if (!string.IsNullOrEmpty(CurrentBaseMapName))
                    {
                        BaseMapInfo baseMapInfo = filteredBasemaps.FirstOrDefault <BaseMapInfo>(b => b.Name == CurrentBaseMapName);
                        if (baseMapInfo != null)
                        {
                            BaseMapsList.SelectedItem = baseMapInfo;
                        }
                    }
                }
                BaseMapsList.SelectionChanged += BaseMapList_SelectionChanged;
            }

            ConfigureButton = GetTemplateChild(PART_CONFIGUREBUTTON) as Button;
            if (ConfigureButton != null)
            {
                ConfigureButton.Click += ConfigureButton_Click;
            }

            if (InitCompleted != null)
            {
                InitCompleted(this, EventArgs.Empty);
            }
        }
示例#8
0
        public override void SwitchBaseMapLayer(Client.Layer oldLayer, BaseMapInfo newBaseMapInfo)
        {
            Client.ArcGISTiledMapServiceLayer tiledLayer = oldLayer as Client.ArcGISTiledMapServiceLayer;
            if (tiledLayer != null)
            {
                // Apply proxy if one is in use or clear it if not
                if (newBaseMapInfo.UseProxy)
                {
                    tiledLayer.ProxyURL = ProxyUrl;
                    LayerExtensions.SetUsesProxy(tiledLayer, true);
                }
                else
                {
                    tiledLayer.ProxyURL = null;
                    LayerExtensions.SetUsesProxy(tiledLayer, false);
                }

                tiledLayer.Url = newBaseMapInfo.Url;

                tiledLayer.SetValue(ESRI.ArcGIS.Client.Extensibility.MapApplication.LayerNameProperty, newBaseMapInfo.DisplayName);
            }
        }
        private string getCurrentBaseMapName()
        {
            ObservableCollection <BaseMapInfo> baseMaps = getBaseMapsFromView();

            if (View.Instance == null || View.Instance.Map == null || View.Instance.Map.Layers.Count < 1 || baseMaps == null)
            {
                return(null);
            }
            TileLayer bingLayer = View.Instance.Map.Layers[0] as TileLayer;

            if (bingLayer != null)
            {
                switch (bingLayer.LayerStyle)
                {
                case TileLayer.LayerType.Road:
                    return("Roads");

                case TileLayer.LayerType.Aerial:
                    return("Aerial");

                case TileLayer.LayerType.AerialWithLabels:
                    return("Hybrid");
                }
            }
            ArcGISTiledMapServiceLayer agsLayer = View.Instance.Map.Layers[0] as ArcGISTiledMapServiceLayer;

            if (agsLayer != null)
            {
                if (baseMaps != null)
                {
                    BaseMapInfo baseMap = baseMaps.FirstOrDefault <BaseMapInfo>(b => b.Url == agsLayer.Url);
                    if (baseMap != null)
                    {
                        return(baseMap.Name);
                    }
                }
            }
            return(null);
        }
示例#10
0
        private void onMoveBaseMapDownCommand(object parameter)
        {
            BaseMapInfo currentSelectedBaseMap = BaseMapsList.SelectedItem as BaseMapInfo;

            if (currentSelectedBaseMap == null)
            {
                return;
            }

            int pos = BaseMaps.IndexOf(currentSelectedBaseMap);

            if (pos < 0 || pos >= BaseMaps.Count)
            {
                return;
            }
            BaseMaps.RemoveAt(pos);
            BaseMaps.Insert(pos + 1, currentSelectedBaseMap);

            // Preserve selection
            BaseMapsList.SelectedIndex = pos + 1;

            refreshMoveCommands();
        }
示例#11
0
        void baseMapInfo_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            BaseMapInfo baseMap = sender as BaseMapInfo;

            if (e.PropertyName == "BaseMapType")
            {
                BaseMapType _baseMapType = baseMap.BaseMapType;
                if (_baseMapType == Core.BaseMapType.BingMaps)
                {
                    baseMap.Url  = "http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc";
                    baseMap.Name = "Roads";
                }
                else if (_baseMapType == Core.BaseMapType.OpenStreetMap)
                {
                    baseMap.Url  = "http://OpenStreetMap.org";
                    baseMap.Name = "Mapnik";
                }
                else
                {
                    baseMap.Url = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";
                    // Name is not important for AGS Server layers
                }
            }
        }
 public abstract Client.TiledMapServiceLayer CreateBaseMapLayer(BaseMapInfo baseMapInfo);
 public abstract void SwitchBaseMapLayer(Client.Layer oldLayer, BaseMapInfo newBaseMapInfo);
 public abstract Client.TiledMapServiceLayer CreateBaseMapLayer(BaseMapInfo baseMapInfo);
 public abstract void SwitchBaseMapLayer(Client.Layer oldLayer, BaseMapInfo newBaseMapInfo);
        public void LoadConfiguration(string configData)
        {
            if (string.IsNullOrEmpty(configData))
            {
                return;
            }

            try
            {
                XDocument xDoc = XDocument.Parse(configData);
                ObservableCollection <BaseMapInfo> baseMaps = new ObservableCollection <BaseMapInfo>();
                XElement rootNode = xDoc.Element("BaseMaps");
                if (rootNode != null)
                {
                    IEnumerable <XElement> baseMapNodes = from elem in rootNode.Elements("BaseMapInfo") select elem;
                    foreach (XElement baseMapNode in baseMapNodes)
                    {
                        BaseMapInfo baseMapInfo = new BaseMapInfo();
                        XElement    DisplayName = baseMapNode.Element("DisplayName");
                        if (DisplayName != null)
                        {
                            baseMapInfo.DisplayName = DisplayName.Value;
                        }
                        XElement Name = baseMapNode.Element("Name");
                        if (Name != null)
                        {
                            baseMapInfo.Name = Name.Value;
                        }
                        XElement ThumbnailImage = baseMapNode.Element("ThumbnailImage");
                        if (ThumbnailImage != null)
                        {
                            baseMapInfo.ThumbnailImage = ThumbnailImage.Value;
                        }
                        XElement BaseMapType = baseMapNode.Element("BaseMapType");
                        if (BaseMapType != null)
                        {
                            BaseMapType outValue;
                            if (Enum.TryParse <BaseMapType>(BaseMapType.Value, out outValue))
                            {
                                baseMapInfo.BaseMapType = outValue;
                            }
                        }
                        XElement Url = baseMapNode.Element("Url");
                        if (Url != null)
                        {
                            baseMapInfo.Url = Url.Value;
                        }
                        baseMaps.Add(baseMapInfo);

                        // Get whether proxy is used
                        XElement UseProxy = baseMapNode.Element("UseProxy");
                        if (UseProxy != null)
                        {
                            bool useProxy;
                            bool.TryParse(UseProxy.Value, out useProxy);
                            baseMapInfo.UseProxy = useProxy;
                        }
                    }
                    BaseMaps = baseMaps;
                }
            }
            catch { }
        }