首页 文章

Windows Phone 7 Map Control在离线模式下使用自定义图层

提问于
浏览
7

嗨WP7移动热情的开发者!

我正在尝试使用Windows Phone控件中默认提供的Bing Map控件 . 具体来说,我正在尝试使用自定义TileSource来提供定制的平铺 Map ,该 Map 将作为文件夹(内容文件)或隔离存储存储在项目中 .

向下我展示了我尝试使用ZXY存储格式的“map”文件夹中存储的 Map 图块/图像作为内容文件的自定义类 .

public class CustomTileSource : Microsoft.Phone.Controls.Maps.TileSource 
{

    private string uriFormat = @"map/{0}/{1}/{2}.png";
    public string UriFormat
    {
        get { return uriFormat; }
        set { uriFormat = value; }
    }

    public override Uri GetUri(int x, int y, int zoomLevel)
    {
        var url = string.Format(UriFormat, zoomLevel, x, y);
        return new Uri(url, UriKind.Relative);
    }
}

尝试使用它不起作用,虽然没有引发错误,但未显示自定义切片 . 有没有人试图用这种方式使用Windows手机 Map 控件?如果那不是正确的方法呢?任何解决方法?

先感谢您!

克劳迪乌

6 回答

  • 2

    您是否已将图像上的构建操作设置为 Content

  • 2

    例外情况是:

    This operation is not supported on a relative URI.
       at System.Uri.get_AbsoluteUri()
       at System.Windows.Media.MultiScaleTileSource.GetTileLayerUrl(IntPtr nativeTarget, Int32 tileLevel, Int32 tileX, Int32 tileY, Int32 uTileImageIndex, IntPtr& fullTileUri, UInt32& fullTileUriLength)
    

    如何使用UriKind.Absolute从IsolatedStorage,Ressource或MediaLibrary获取图像我还没有找到...也许你知道吗?

  • 2

    这似乎是一个非常常见问题 - Map Tile Caching for Offline Viewing - 遗憾的是没有FAQ解决方案:/

  • 0

    您是否尝试使用此问题中描述的应用ID构建绝对文件网址? Map Tile Caching for Offline Viewing

  • 2

    我试过了,

    您是否尝试使用此问题中描述的应用ID构建绝对文件网址?映射平铺缓存以进行脱机查看

    Map 组件没有显示我的图像,但很简单

    Image.Source = new BitmapImage(new Uri(“file:///Applications/Install/0277CC52-888B-4593-A28D-4CFF818E81E7/Install/maps/-1040122162.jpg”,UriKind.Absolute));

    正在显示图像......

  • 1

    你可以在博客中找到解决方案http://invokeit.wordpress.com/2012/06/30/bing-mapcontrol-offline-tiles-solution-wpdev-wp7dev/

    一般来说,你只需要

    • 覆盖TileSource类中的GetUri函数:返回null以让MapLayerTile忽略此tile,并将tile信息保存到某个后台worker

    • 在后台工作程序中,从任何位置(隔离存储或网络)加载磁贴,然后手动将其添加到MapLayer控件 .

相关问题