Exemple #1
0
 private static void RefreshOverlay(TileOverlay tileOverlay)
 {
     if (Application.Current != null)
     {
         Application.Current.Dispatcher.BeginInvoke(new Action <TileOverlay>(tmpOverlay =>
         {
             tmpOverlay.RefreshWithBufferSettings();
         }), tileOverlay);
     }
     else
     {
         tileOverlay.RefreshWithBufferSettings();
     }
 }
 public static void Invalidate(this TileOverlay overlay, bool delay)
 {
     if (overlay.TileCache != null)
     {
         overlay.RefreshCache();
     }
     if (overlay.MapArguments != null)
     {
         if (delay)
         {
             overlay.RefreshWithBufferSettings();
         }
         else
         {
             overlay.Refresh();
         }
     }
 }
        internal static MenuItem GetTileTypeMenuItem(TileOverlay tileOverlay)
        {
            MenuItem tileTypeItem = new MenuItem();

            tileTypeItem.Header = "Tile type";
            tileTypeItem.Icon   = new Image {
                Source = new BitmapImage(new Uri("pack://application:,,,/GisEditorPluginCore;component/Images/tiltType.png", UriKind.Absolute)), Width = 16, Height = 16
            };

            MenuItem singleMenuItem = new MenuItem();

            singleMenuItem.Header = "Single tile";
            ObservedCommand singleCommand = new ObservedCommand(() =>
            {
                foreach (var subItem in tileTypeItem.Items.OfType <MenuItem>())
                {
                    if (subItem.Header == singleMenuItem.Header)
                    {
                        singleMenuItem.IsChecked = true;
                    }
                    else
                    {
                        subItem.IsChecked = false;
                    }
                }
                tileOverlay.TileType = TileType.SingleTile;
                tileOverlay.RefreshWithBufferSettings();
            }, () => GisEditor.ActiveMap != null);

            singleMenuItem.Command = singleCommand;

            MenuItem hybridMenuItem = new MenuItem();

            hybridMenuItem.Header = "Multiple tile";
            ObservedCommand hybridCommand = new ObservedCommand(() =>
            {
                foreach (var subItem in tileTypeItem.Items.OfType <MenuItem>())
                {
                    subItem.IsChecked = false;
                }
                hybridMenuItem.IsChecked = true;
                tileOverlay.TileType     = TileType.HybridTile;
                tileOverlay.RefreshWithBufferSettings();
            }, () => GisEditor.ActiveMap != null);

            hybridMenuItem.Command = hybridCommand;


            MenuItem preloadMenuItem = new MenuItem();

            preloadMenuItem.Header = "Hybrid tile";
            ObservedCommand preloadCommand = new ObservedCommand(() =>
            {
                foreach (var subItem in tileTypeItem.Items.OfType <MenuItem>())
                {
                    if (subItem.Header == preloadMenuItem.Header)
                    {
                        preloadMenuItem.IsChecked = true;
                    }
                    else
                    {
                        subItem.IsChecked = false;
                    }
                }
                tileOverlay.TileType = TileType.PreloadDataHybridTile;
                tileOverlay.RefreshWithBufferSettings();
            }, () => GisEditor.ActiveMap != null);

            preloadMenuItem.Command = preloadCommand;


            switch (tileOverlay.TileType)
            {
            case TileType.SingleTile:
                singleMenuItem.IsChecked = true;
                break;

            case TileType.PreloadDataHybridTile:
                preloadMenuItem.IsChecked = true;
                break;

            case TileType.MultipleTile:
            case TileType.HybridTile:
            default:
                hybridMenuItem.IsChecked = true;
                break;
            }

            tileTypeItem.Items.Add(singleMenuItem);
            tileTypeItem.Items.Add(hybridMenuItem);
            tileTypeItem.Items.Add(preloadMenuItem);

            return(tileTypeItem);
        }