2013-06-05 2 views
5

Я просто очистил слои от моей программы сопоставления, и когда я пытаюсь добавить новый слой, я получаю это сообщение об ошибке.Попытка добавления наложений для отображения ошибки

newSystem.ArgumentException was unhandled by user code 
HResult=-2147024809 
Message=Value does not fall within the expected range. 
Source=System.Windows 
InnerException: 

Если кто-нибудь знает, почему это я очень ценю вашу помощь

private void loadZoomLevel12Pics() 
    { 
     map1.Layers.Clear(); 
     MapLayer pinLayer = new MapLayer(); 
     // Create a new empty Pushpin 
     // Beny Sur- Mer War Cemetary 
     MapOverlay pinOverlay = new MapOverlay(); 
     // Add the location of the Pushpin using latitude and longitude. 
     pinOverlay.GeoCoordinate = new GeoCoordinate(49.33783000, -0.45215600); 
     //Image pinOverlayImage = new Image(); 
     pinOverlayImage.Source = new BitmapImage(new Uri("images/Hedgehog.png", UriKind.Relative)); 
     pinOverlay.Content = pinOverlayImage; 
     pinOverlay.PositionOrigin = new Point(0.0, 0.0); 
     pinOverlayImage.Opacity = 0.8; 
     pinOverlayImage.Height = 8; 
     pinOverlayImage.Width = 8; 
     pinOverlayImage.Tap += pinOverlayImage_Tap; 
     pinLayer.Add(pinOverlay); 
     map1.Layers.Add(pinLayer); 

Затем эти фотографии будут удалены, и новый уровень масштабирования загружается

private void loadZoomLevel13Pics() 
    { 
     map1.Layers.Clear(); 
     MapLayer pinLayer = new MapLayer(); 
     // Create a new empty Pushpin 
     // Beny Sur- Mer War Cemetary 
     MapOverlay pinOverlay = new MapOverlay(); 
     // Add the location of the Pushpin using latitude and longitude. 
     pinOverlay.GeoCoordinate = new GeoCoordinate(49.33783000, -0.45215600); 
     //Image pinOverlayImage = new Image(); 
     pinOverlayImage.Source = new BitmapImage(new Uri("images/Hedgehog.png", UriKind.Relative)); 
     pinOverlay.Content = pinOverlayImage; 
     pinOverlay.PositionOrigin = new Point(0.0, 0.0); 
     pinOverlayImage.Opacity = 0.8; 
     pinOverlayImage.Height = 30; 
     pinOverlayImage.Width = 30; 
     pinOverlayImage.Tap += pinOverlayImage_Tap; 
     pinLayer.Add(pinOverlay); 
     map1.Layers.Add(pinLayer); // THIS IS THE LINE CAUSING THE PROBLEM 

Все изображения объявляются глобально, потому что они используются в других функциях/методах внутри программы.

Кажется, что он пытается добавить тот же слой, который был добавлен ранее, и с трудом это делает, но все слои очищаются в первой строке метода.

+0

Включите код в свой вопрос –

+0

okay Я сделал @AlaaMasoud –

+1

Удалось ли вам решить это, поскольку я вижу ту же проблему в своем приложении? –

ответ

3

У меня была эта же проблема с использованием глобального полигона вместо изображения. Проблема в том, что даже если вы вызываете map1.Layers.Clear(), это происходит не сразу после его вызова, поэтому вам нужно создать новое изображение. В общем, это можно устранить, не используя глобальные/экземплярные переменные для overlay.Content ... просто объявляйте его каждый раз и присваивайте его Контенту.