在构建显示地图的程序时,我有两个滑块:
根据缩放级别,我在任何给定时间都需要在地图上显示近200张图像。 (每个人都可以点击)
有这么多图像,我得到了: “在System.Windows.ni.dll中发生'System.OutOfMemoryException'类型的第一次机会异常” 抛出。
这些图像中的许多都是相同的 - 只是在不同的地方显示。我觉得我需要分别初始化每个不同的Image并将它放在它自己的MapOverlay中,而不是引用全局构造的Image并在需要时引用它,效率非常低。 (全局定义图像时清除Map.Layers也存在问题。)
有没有更好的方法可以将许多图像添加到地图中?
在我拍摄了大约50张图像后,我得到了OutOfMemoryException(图像需要单独定义,以便它们的尺寸为正方形,以便旋转正常工作)。
图像如何添加到项目/应用程序(“构建操作”或“复制到输出目录”)是否重要?将它们放在隔离存储中会更好吗?这会有所作为吗?
以下是我目前用于添加图片的代码:
MapLayer pinLayerZoom12 = new MapLayer();
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 = 10;
pinOverlayImage.Width = 10;
pinOverlayImage.Tap += pinOverlayImage_Tap;
pinLayerZoom12.Add(pinOverlay);
MapOverlay pinOverlay2 = new MapOverlay();
// Add the location of the Pushpin using latitude and longitude.,
pinOverlay2.GeoCoordinate = new GeoCoordinate(49.33783000, -0.44547083);
Image pinOverlay2Image = new Image();
pinOverlay2Image.Source = new BitmapImage(new Uri("images/Hedgehog.png", UriKind.Relative));
pinOverlay2.Content = pinOverlay2Image;
pinOverlay2.PositionOrigin = new Point(0.0, 0.0);
pinOverlay2Image.Opacity = 0.8;
pinOverlay2Image.Height = 10;
pinOverlay2Image.Width = 10;
pinOverlayImage.Tap += pinOverlayImage2_Tap;
pinLayerZoom12.Add(pinOverlay2);
// Add the layer to the map
map1.Layers.Add(pinLayerZoom12);
感谢您提供给我的任何帮助!