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

时间:2010-12-08 10:22:17

标签: windows-phone-7 map controls tiles

Hi WP7移动热情的开发者!

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

向下我展示了我尝试使用ZXY存储格式的“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手机地图控件? 如果那不是正确的方法呢?任何解决方法?

提前谢谢!

克劳迪乌

6 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我试过了,

  

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

地图组件没有向我显示图片,而是简单

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

正在显示图片......

答案 5 :(得分:0)

您可以在博客http://invokeit.wordpress.com/2012/06/30/bing-mapcontrol-offline-tiles-solution-wpdev-wp7dev/

中找到解决方案

一般来说,你只需要

  1. 覆盖TileSource类中的GetUri函数:返回null以让MapLayerTile忽略此图块,并将图块信息保存到某个后台工作程序
  2. 在后台工作程序中,从任何位置(隔离存储或网络)加载磁贴,然后手动将其添加到MapLayer控件。