Error: System.ArgumentException was unhandled HResult=-2147024809 Message=An item with the same key has already been added. Source=mscorlib StackTrace: at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at Telerik.WinControls.UI.DbfHeader.CreateExtendedPropertySet() at Telerik.WinControls.UI.DbfReader..ctor(Stream stream, ExtendedPropertySet propertySet, Encoding encoding) at Telerik.WinControls.UI.ShapeFileReader.Read(ShapeFileReaderParameters parameters) at _1125357MapShapeFiles.RadForm1..ctor() in d:\Projects\1125357MapShapeFiles\RadForm1.cs:line 37 at _1125357MapShapeFiles.Program.Main() in d:\Projects\1125357MapShapeFiles\Program.cs:line 17 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 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() InnerException:
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);
}
}
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:
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
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.'
Run the attached project.
Expected:
10 points on each row.
Actual:
There is a seemingly random number of points on each row:
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,
An exception is thrown while adding layers without name. (System.InvalidOperationException: 'A layer with the same Name already exists in the collection.')
i.e
var layer1 = new MapLayer();
var layer2 = new MapLayer();
map.Layers.Add(layer1);
map.Layers.Add(layer2);
The simple fix is to always pass a unique name, but it must work like say DataTable.Columns.Add(); (which internally generates unique name)
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:
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
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
In this case, we have missing image tiles while zooming and scrolling the map. When downloading a tile, the internal WebClient is returning an error with the following message: The server committed a protocol violation. Section=ResponseStatusLine. The WebException does not have a Response. This scenario is not handled in code which will lead to missing image tiles. Zooming the same area will reload the missing tiles, but still, it should be handled in the source code.