An OutOfMemmoryException is thrown under the following conditions: 1. The map displays its data using the VisualizationLayer populated with MapShapeData object. 2. The zoom level is changed to Neighborhood using the Zoom button from the map's navigation. 3. The zoom button is hovered Note: The MapShapeData should be visible when the zoom is applied The exception is not reproducible if the project's Platform is set to x64. Since Q1 2016, the BitMapCaching of RadMap is turned off by default and the issue is not reproducible unless you turn the caching on. Possible Workarounds: - the exception is not reproducible if the project's Platform is set to x64 - double check that UseBitMapCahe property of the Visualizationlayer is set to False. When False, the issue is not reproducible.
The method UpdateShapeData of MapShapebindableWrapper should be protected or at least protected internal so that it would be possible to inherit from that class.
Concurreny issue - exception in PathGeometryData.GetScreeenGeometry() when the geometry is updated runtime. Custom MapGeometryView which updates its GeometryData runtime. This leads to cocncurrency issue in VisualizationLayer and its shape processcing code. This leads to Exception in GetScreenGemetry() method of PathGeometryData.
Currently the SQL GeospatialDataReaders do not support binding to source - collection of DataRows. You store the data in the datarows for example like si row["Geometry"] ="PolyGone((Point 1, ....))" but there is no property you can set for GeospatialPropertyName in order to retrive this Geometry data.
Width / Height of the MapEllipseView are bound to doubles from ViewModel. Runtime change to 0 does not hide / remove the Ellipse from the Map. This is a bug in the MapShapeBindableWrapper's Geometry update code. The workaround is to use the Visibility of the MapEllipseView in order to hide it. Other workaround could be using FrameworkElements (Ellipse, Polyline, Rectangle) instead of BindableWrappers (MapEllipseView, MapPolylinerView, MapRectangleView).
Map with VisualizationLayer (VL) bound to collection of objects. VL uses an ItemTemplate consisting of MapEllipseView object whose Location Width and Height properties are bound to ViewModel's properties. On a button click, the ItemsSource of the VL is refreshed. However, the ellipses do not appear until a zoom action is performed.
Expose a property that allows you to get the user state in the SearchLocationError event arguments (BingRestSearchLocationErrorEventArgs). Currently, only the SearchLocationCompleted event args give this information. You can work this around using the following approach: You can create a custom BingRestMapProvider and override its OnSearchRequestCompleted() method. There you can get the UserData from the DownloadStringCompletedEventArgs. Check the attached project.
MiniMapWidth and MiniMapHeight have default values 250 and 200. If you use different values, for example 250 and 250, panning the RadMap can result in jumping the minimap - unexpected zoom in/out. This is easier to observe with MiniMap, outside RadMap. Playing with Width / Height of the MiniMap might workaround the issue.
Add a way to control the pan / zoom animation duration. Currently the properties which control these animation durations are private in MultiScaleImage.cs
Currently, when you use the BingRestMapProvider and the BingRestSearchLocationRequest the found locations are formatted using the System.Text.Encoding.Default encoding. This way if the found location contains unsupported characters they won't be shown properly. Introduce a property for the BingRestSearchLocationRequest class that allows you to set the Encoding.
In reference to: https://www.telerik.com/forums/binding-question
This sample project is not exactly the same as my actual project, but has the same issue.
I have multiple maps visible. I have a PolygonData that I want to be visible on both maps. It shows up fine. However, the polygon on the first map will not scale when zooming with the FIRST map. If I zoom with the SECOND map, both polygons will correctly scale.
If I replace PolygonData with my own object (PolygonVM), both polygons always correctly scale.
I have only seen this once. It's possible this is because I am using multiple maps at the same time. I think it crashed the application, but I do not recall.
System.IO.IOException
HResult=0x80070020
Message=The process cannot access the file 'C:\Users\jasond\AppData\Local\TelerikMapCache\Telerik.Windows.Controls.Map.BingRestRoadOnDemandSource.23x7935x11621' because it is being used by another process.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Telerik.Windows.Controls.Map.FileSystemCache.OpenCacheStream(String fileName)
at Telerik.Windows.Controls.Map.FileCacheBase.LoadAsync(String fileName, Action`1 callback)
at Telerik.Windows.Controls.Map.TiledMapSource.GetCachedTileAsync(Int32 tileLevel, Int32 tilePositionX, Int32 tilePositionY, Action`1 callback)
at Telerik.Windows.Controls.Map.MultiScaleTileSource.DownloadTile(TileId tileId)
at Telerik.Windows.Controls.Map.TilesDownloadManager.RequestTile(Int32 requestLevel, Int32 tileX, Int32 tileY, Nullable`1 absTileX)
at Telerik.Windows.Controls.Map.TilesDownloadManager.RequestTop3Levels(Int32 endLevel3)
at Telerik.Windows.Controls.Map.TilesDownloadManager.Process()
at Telerik.Windows.Controls.Map.TilesDownloadManager.DownloaderThread()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
If you update the Location of a map shape data object (for example, EllipseData, PolygonData, ect.) at run-time, while the clustering feature is enabled, the shape disappears.
To work this around, reset the clustering via the IsClusteringEnabled property when the Location changes.
this.ellipseShapeData = new Location(newLatitude, newLongitude);
this.visualizationLayer.ClusteringEnabled = false;
this.visualizationLayer.ClusteringEnabled = true;