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 %!
5 Answers, 1 is accepted
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
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"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
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
:
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
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
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