将多个图像添加到WP8地图的正确方法是什么?

时间:2014-02-24 00:34:48

标签: windows-phone-8 here-api

在构建显示地图的程序时,我有两个滑块:

  1. 改变了地图的音高
  2. 旋转地图的标题 并且,两个按钮可以更改地图的Zoom_Level
  3. 根据缩放级别,我在任何给定时间都需要在地图上显示近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);
    

    感谢您提供给我的任何帮助!

0 个答案:

没有答案