Map panning cpu usage

6 posts, 0 answers
  1. Sayyed Hossein
    Sayyed Hossein avatar
    20 posts
    Member since:
    Oct 2012

    Posted 13 Aug Link to this post

    hi dear telerik team

    i have a problem that wanted to check if it was Me-Specific! you see when i pan the map around in circles the cpu usage goes up to even 99%!! i have 4 items on map in two visualization layers and my map source is a local tile source (tile files are on my own pc). AND when the control with a map in it is open i get a cpu usage waving between 1% to 30 %!

  2. Martin
    Admin
    Martin avatar
    1101 posts

    Posted 17 Aug Link to this post

    Hello Sayyed,

    We are not aware of the described issue. However, there is a memory increasing behavior that appears in some situations with the VisualizationLayer. You can see it in our feedback portal and check if the suggested workarounds will resolve your issue as well. Basically, if you are using a version of UI for WPF older than Q1 2016, you can try setting the UseBitMapCahe property of the VisualizationLayer to False.

    If this doesn't help you can open a new support ticket and send a project demonstrating the issue.

    Regards,
    Martin
    Telerik by Progress
    Do you need help with upgrading your AJAX, WPF or WinForms project? Check the Telerik API Analyzer and share your thoughts.
  3. UI for WPF is Visual Studio 2017 Ready
  4. Sayyed Hossein
    Sayyed Hossein avatar
    20 posts
    Member since:
    Oct 2012

    Posted 06 Nov in reply to Martin Link to this post

    the version of dlls i am using is 2016.3.914.40

    and i have offline maptiles on my PC and use a custom source these are the codes for a very simpler situation(no visualizationlayer) that also has CPU usage of up to 70-80 percent while panning

    1- LocalhostProvider.Cs :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Telerik.Windows.Controls.Map;
     
    namespace Tetra.DispatchingSystem.UI.ViewModels.AVL
    {
        public class LocalhostProvider : TiledProvider
        {
            public LocalhostProvider(string tileUriFormat)
                : base()
            {
                LocalhostTileSource source = new LocalhostTileSource(tileUriFormat);
                this.MapSources.Add(source.UniqueId, source);
            }
     
            public override ISpatialReference SpatialReference
            {
                get
                {
                    return new MercatorProjection();
                }
            }
        }
     
    }

     

    2-LocalhostTileSource.Cs :

    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Linq;
    using System.Text;
    using Telerik.Windows.Controls.Map;
     
    namespace Tetra.DispatchingSystem.UI.ViewModels.AVL
    {
        public class LocalhostTileSource : TiledMapSource
        {
            private string tileUriFormat;
     
            public LocalhostTileSource(string tileUriFormat)
                : base(1, 20, 256, 256)
            {
                this.tileUriFormat = tileUriFormat;
            }
     
            public override void Initialize()
            {
                try
                {
                    this.RaiseInitializeCompleted();
     
                }
                catch (Exception ex)
                {
                }
            }
     
            protected override Uri GetTile(int tileLevel, int tilePositionX, int tilePositionY)
            {
     
                //int zoomLevel = tileLevel;
     
                int zoomLevel = ConvertTileToZoomLevel(tileLevel);
                string url = this.tileUriFormat.Replace("{zoom}", zoomLevel.ToString(CultureInfo.InvariantCulture));
                url = url.Replace("{x}", tilePositionX.ToString(CultureInfo.InvariantCulture));
                url = url.Replace("{y}", tilePositionY.ToString(CultureInfo.InvariantCulture));
                return new Uri(url);
            }
        }
     
    }

     

    3-  MainWindow.xaml :

    <Window x:Class="StandAloneMapTest.MainWindow"
            x:Name="_this"
            Title="window" Height="700" Width="700">
        <Grid>
     
                <telerik:RadMap FlowDirection="LeftToRight" Margin="5" x:Name="radMap" Provider="{Binding ElementName=_this,Path=Provider}"
                            Center="33.8469016440728,52.9080691223145"
                            MiniMapExpanderVisibility="Collapsed" MinZoomLevel="13" MaxZoomLevel="19"
                            CommandBarVisibility="Collapsed" NavigationVisibility="Collapsed" ZoomBarPresetsVisibility="Collapsed" >
     
                </telerik:RadMap>
     
     
        </Grid>
    </Window>

     

    4-MainWindow.xaml.cs :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using Telerik.Windows.Controls.Map;
    using Tetra.DispatchingSystem.UI.ViewModels.AVL;
     
    namespace StandAloneMapTest
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                DataContext = this;
                InitializeComponent();
            }
     
            private TiledProvider _provider;
            public TiledProvider Provider
            {
                get
                {
                    if (this._provider==null)
                    {
                        string mapPath = "c:/OfflineMap";
                        this._provider = new LocalhostProvider(@"" + mapPath + "/gm_{x}_{y}_{zoom}.png"); ;
                    }
                    return this._provider;
                }
                set
                {
                    if (this._provider != value)
                    {
                        this._provider = value;
                         
                    }
                }
            }
         }
    }

     

    my tiles are store in c:\offlinemap and are read from there

    thank you in advance for your help

    :

  5. Martin
    Admin
    Martin avatar
    1101 posts

    Posted 08 Nov Link to this post

    Hi Sayyed,

    I tested your code with OS map tiles images and the panning and zooming process takes up to 40% of the CPU, which depends on the pictures size. Note that bigger pictures might take more processing time. However, this is a bit far from the 70-100% percent that you mentioned. If you share the image files I can take a peek and see if I can give you more information on this.

    Regards,
    Martin
    Telerik by Progress
    Do you need help with upgrading your WPF project? Try the Telerik API Analyzer and share your thoughts!
  6. Sayyed Hossein
    Sayyed Hossein avatar
    20 posts
    Member since:
    Oct 2012

    Posted 12 Nov in reply to Martin Link to this post

    my pictures are png tiles from google earth. the size of them varies between 1KB to 50KB depending on zoom.

    and my cpu is a G2030 @ 3.00 GHz 3.00 GHz

     

  7. Martin
    Admin
    Martin avatar
    1101 posts

    Posted 16 Nov Link to this post

    Hi Sayyed,

    I can't reproduce the issue with the provided information. The pictures I used for testing are more or less the same size (1-50KB).

    Regards,
    Martin
    Telerik by Progress
    Do you need help with upgrading your WPF project? Try the Telerik API Analyzer and share your thoughts!
Back to Top
UI for WPF is Visual Studio 2017 Ready