CustomMapTileDataSource不渲染任何图像

时间:2014-11-11 17:20:35

标签: c# image-processing bing-maps

我在Windows Phone 8.1上使用Bing地图尝试将GIF图像渲染到地图上。

我希望能够将它们添加为磁贴。

修改:我使用Microsoft的以下链接作为基本示例:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn632728.aspx

这是我用来尝试渲染图像的代码。没有什么打破,我看到没有错误,但图像没有显示。如果我将图像添加为地图控件的子图像,我可以看到图像,因此我得出结论,这与DataSource本身有关。

关于为什么图像不会渲染的任何想法都会非常有用。

// item is a IRandomAccessStream
MainMap.AddImage(item);

// the following methods/events are in another class
// imageData is a global IRandomAccessStream
// _map is my Map object
public void AddImage(IRandomAccessStream image, double x, double y)
    {
        imageData = image;
        X = x;
        Y = y;

        CustomMapTileDataSource customSource = new CustomMapTileDataSource();
        customSource.BitmapRequested += customSource_BitmapRequested;

        var customTileSource = new MapTileSource(customSource);
        customTileSource.Visible = true;
        customTileSource.ZIndex = 10;
        customTileSource.TilePixelSize = 256;
        _map.TileSources.Add(customTileSource);

private async void customSource_BitmapRequested(CustomMapTileDataSource sender, MapTileBitmapRequestedEventArgs args)
    {
        var deferral = args.Request.GetDeferral();
        args.Request.PixelData = await GetImageData();
        deferral.Complete();
    }

private async Task<IRandomAccessStreamReference> GetImageData()
    {
        return RandomAccessStreamReference.CreateFromStream(imageData);
    }

1 个答案:

答案 0 :(得分:1)

看起来你总是使用一个流,但你从未将位置设置为0.想知道是否可能在第一个磁贴请求之后,如果所有其他的都没有获得任何数据。

看看我使用CustomMapTileDataSource类放在一起的代码示例:https://code.msdn.microsoft.com/Adding-Opacity-and-WMS-cf6773f1

如果你注释掉了我的代码示例中更改像素不透明度的for循环,它应该完全按照你要做的那样。