The ShapeFileReader fails in its ReadDbfRecord method:
using (MemoryStream shapeStream = new MemoryStream(File.ReadAllBytes(@"C:\Users\dyordano\Downloads\84aa4699-f436-4b7e-b029-e353fdab0411_shapefile-before-modification\asseuappareil.shp")))
{
using (MemoryStream dbfStream = new MemoryStream(File.ReadAllBytes(@"C:\Users\dyordano\Downloads\84aa4699-f436-4b7e-b029-e353fdab0411_shapefile-before-modification\asseuappareil.dbf")))
{
ShapeFileReaderParameters parameters = new ShapeFileReaderParameters();
parameters.ShapeStream = shapeStream;
parameters.DbfStream = dbfStream;
ShapeFileReader reader = new ShapeFileReader();
List<MapVisualElement> elements = reader.Read(parameters);
}
}
Hello,
on a german Windows, when searching with the bingmapsprovider for "München",
the tooltip on the Pin doesn't shows the ü in the correct way.
Hi,
Please refer. below code...
void ShowInfoUI()
{
var padding = new Padding(0);
var font = new Font(Font.FontFamily, 8.0f);
if (T.InfoLayer.IsVisible = cbShowInfo.Checked)
{
var overlays = T.PinsLayer.Overlays;
for (int i = 0; i < overlays.Count; i++)
{
var callout = new MapCallout(overlays[i]) { Font = font, Padding = padding, Text = "1234567", Distance = 5 };
T.InfoLayer.Add(callout);
}
}
}
There are 2 layers, InfoLayer (MapCallout) and PinsLayer (MapPins). cbShowInfo controls if MapCallout tobe shown.
If the 'Text' length is less than 8 wrapping happens, and not otherwise. Usually, If Text length is more then wrapping should happen.
Thanks
Hi,
Please refer attached screen.
In a specific use case, it was required to add MapPins to a MapLayer, and later MapLayer to be added to a RadMap, and this exception.
Thanks
Use the custom implementation in the following KB article: https://docs.telerik.com/devtools/winforms/knowledge-base/radmap-export-to-an-image?_ga=2.41263138.1402359144.1621138970-937174403.1607349180
The pins are successfully exported in version 2021.1.204:
After upgrading to version 2021.2.511, the pins are not exported anymore:
Run the attached project.
Expected:
10 points on each row.
Actual:
There is a seemingly random number of points on each row:
Run the attached project and follow the steps in the gif file. As a result the following exception occurs:
System.IO.IOException: 'The process cannot access the file 't_0_0_1.png' because it is being used by another process.'
Please refer to the attached gif file. The sample project together with the sample files of the local provider can be downloaded here: https://1drv.ms/u/s!AnnV2HsINMD_yxDEY2iOWHXn5V9_?e=VurA0N
There is a noticeable delay after moving the mouse while panning the map. After making a comparison with Open Street Maps and a local provider, it seems that the local provider is slightly slower than the OSM provider. Please refer to the attached gif file.
After profiling the project, it seems that Image.FromFile for loading the required tile takes most of the time:
With the OSM the tile is loaded by using Image.FromStream and it takes 3 times less time:
Hello,
I am using RadMap to display a KML file.
Unfortunately, it looks like RadMap is not displaying properly all the shapes (departments).
Displayed with RadMap (few holes, ie departments not displayed):
Displayed with a third party tool (all departments properly displayed):
I have attached the KML file in a zip file.
Best,
Olivier
public partial class RadForm1 : RadForm
{
private BingRestMapProvider bingProvider;
public RadForm1()
{
this.InitializeComponent();
this.SetupBingProvider();
this.SetupLayers();
this.ImportTestItem();
this.radMapViewer.MapElement.MiniMapElement.EnableZooming = true;
}
private void SetupBingProvider()
{
string bingKey = "Your Bing Key";
this.bingProvider = new BingRestMapProvider();
this.bingProvider.UseSession = true;
this.bingProvider.BingKey = bingKey;
this.bingProvider.ImagerySet = Telerik.WinControls.UI.Map.Bing.ImagerySet.Aerial;
LocalFileCacheProvider cache = new LocalFileCacheProvider(@"..\..\cache");
this.bingProvider.CacheProvider = cache;
this.bingProvider.ProviderUpdated += this.BingProvider_ProviderUpdated;
this.radMapViewer.Providers.Add(this.bingProvider);
this.bingProvider.InitializationComplete += this.BingProvider_InitializationComplete;
}
private void BingProvider_ProviderUpdated(object sender, EventArgs e)
{
// Workaround
this.bingProvider.MaxZoomLevel = 20;
}
private void BingProvider_InitializationComplete(object sender, EventArgs e)
{
this.radMapViewer.BringIntoView(new PointG(42.698559196991135, 23.320803862212352), 20);
}
private void SetupLayers()
{
MapLayer modelLayer = new MapLayer("Models");
this.radMapViewer.Layers.Add(modelLayer);
}
public void ImportTestItem()
{
Collection<Collection<PointG>> paths = new Collection<Collection<PointG>>();
var points = new Collection<PointG>();
paths.Add(points);
points.Add(new PointG(42.698559196991135, 23.320803862212352));
points.Add(new PointG(42.698927962901238, 23.319237221916447));
points.Add(new PointG(42.698928093965123, 23.319236667248555));
points.Add(new PointG(42.698928095639218, 23.319236660952237));
points.Add(new PointG(42.698661960692946, 23.319152714625682));
points.Add(new PointG(42.698661958997257, 23.319152719880927));
points.Add(new PointG(42.698661126454983, 23.319156258531189));
points.Add(new PointG(42.698366706433447, 23.320407248233786));
points.Add(new PointG(42.698559196991135, 23.320803862212352));
MapPath mapVisual = new MapPath(paths);
mapVisual.BorderColor = Color.Blue;
mapVisual.BackColor = Color.Empty;
mapVisual.BorderWidth = 3;
this.radMapViewer.Layers["Models"].Add(mapVisual);
}
}
To reproduce: add a RadMap with a Bing provider, select the canvas "Aerial with labels on demand" and zoom in all the way. It always gets the following exception: System.ArgumentException: Parameter is not valid. at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) at Telerik.WinControls.UI.MapTileDownloader.TileDownloadDataCompleted(Object sender, DownloadDataCompletedEventArgs e) at System.Net.WebClient.OnDownloadDataCompleted(DownloadDataCompletedEventArgs e) The issue is reproducible in Demo application with the Bing examples. Workaround: public RadForm1() { InitializeComponent(); string cacheFolder = @"..\..\cache"; BingRestMapProvider bingProvider = new Telerik.WinControls.UI.BingRestMapProvider(); bingProvider.TileDownloader = new CustomMapTileDownloader(); bingProvider.UseSession = true; bingProvider.BingKey = "your bing key"; LocalFileCacheProvider cache = new LocalFileCacheProvider(cacheFolder); bingProvider.CacheProvider = cache; this.radMap1.Providers.Add(bingProvider); } public class CustomMapTileDownloader : MapTileDownloader { protected override void TileDownloadDataCompleted(object sender, System.Net.DownloadDataCompletedEventArgs e) { TileInfo tileInfo = ((TileInfo)e.UserState); if (e.Error == null) { try { using (MemoryStream ms = new MemoryStream(e.Result)) { Image img = Image.FromStream(ms, true, true); tileInfo.Content = e.Result; this.OnTileDownloadComplete(new TileInfoEventArgs(tileInfo)); lock (this.webClientsPoolLockObject) { this.webClientsPool[tileInfo.Quadkey].DownloadDataCompleted -= this.TileDownloadDataCompleted; this.webClientsPool.Remove(tileInfo.Quadkey); this.webRequestCache.Remove(tileInfo.Quadkey); } } } catch (Exception) { } } else { if (this.ShouldRetryDownload(e.Error)) { Uri uri = this.webRequestCache[tileInfo.Quadkey]; lock (this.webClientsPoolLockObject) { uri = new Uri(this.webClientsPool[tileInfo.Quadkey].BaseAddress); this.webClientsPool[tileInfo.Quadkey].DownloadDataCompleted -= this.TileDownloadDataCompleted; this.webClientsPool.Remove(tileInfo.Quadkey); this.webRequestCache.Remove(tileInfo.Quadkey); } this.BeginDownloadTile(uri, tileInfo); } } } } }
Recently OpenStreetMap changed their tile usage policy and require UserAgent string in the web headers for accessing tile.openstreetmap.org tiles.
https://operations.osmfoundation.org/policies/tiles/
As a result, standard open street map mode does not work - no tiles are loaded and "too many requests" error is returned from the server.
RadMap's OpenStreetMapProvider needs API (event, property or similar) for easier set up of UserAgent / Referer / other headers of web requests.
Please refer to the sample project and follow the steps:
1. Run the attached application.
To reproduce:
set the clustering and add some pins upon a button click.
Workaround
Refresh with the following method: