2013-06-05 24 views
5

Tôi vừa xóa các lớp khỏi chương trình ánh xạ của mình và khi tôi cố gắng thêm một lớp mới, tôi nhận được thông báo lỗi này.Cố gắng thêm lớp phủ vào lỗi bản đồ

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

Nếu có ai biết tại sao điều này là tôi sẽ rất nhiều đánh giá cao sự giúp đỡ của bạn

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); 

Sau đó, những bức ảnh này sẽ bị xóa và mức thu phóng mới được tải

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 

Tất cả các hình ảnh được khai báo trên toàn cầu vì chúng được sử dụng trong các hàm/phương thức khác bên trong chương trình.

Có vẻ như nó đang cố gắng thêm cùng một lớp đã được thêm trước đó và gặp khó khăn khi làm như vậy, nhưng tất cả các lớp sẽ bị xóa trên dòng đầu tiên của phương thức.

+0

Bao gồm mã trong câu hỏi của bạn –

+0

okay Tôi đã làm @AlaaMasoud –

+1

Bạn có bao giờ quản lý để giải quyết vấn đề này khi tôi thấy cùng vấn đề trong ứng dụng của mình không? –

Trả lời

3

Tôi đã gặp vấn đề tương tự khi sử dụng đa giác chung thay vì hình ảnh. Vấn đề là mặc dù bạn đang gọi map1.Layers.Clear() điều này không được thực hiện ngay lập tức sau khi nó được gọi là do đó bạn cần phải tạo ra một hình ảnh mới. Nói chung, điều này có thể được khắc phục bằng cách không sử dụng biến toàn cục/cá thể cho overlay.Content ... chỉ cần khai báo mỗi lần và gán nó cho Nội dung.