我在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);
}
答案 0 :(得分:1)
看起来你总是使用一个流,但你从未将位置设置为0.想知道是否可能在第一个磁贴请求之后,如果所有其他的都没有获得任何数据。
看看我使用CustomMapTileDataSource类放在一起的代码示例:https://code.msdn.microsoft.com/Adding-Opacity-and-WMS-cf6773f1
如果你注释掉了我的代码示例中更改像素不透明度的for循环,它应该完全按照你要做的那样。