Windows Phone 7 Map Control with custom layer in offline mode

ぃ、小莉子 提交于 2019-12-01 01:32:27

问题


Hi WP7 mobile passionate developers!

I'm trying to use the default provided Bing Map control from Windows Phone controls. Specifically I'm trying to use a custom TileSource to provide a custom made tiled map that will be stored in the project as a folder (Content files) or in isolate storage.

Down I present the custom class I try to use with map tiles/images stored in "map" folder in ZXY storage format as content files.

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);
    }
}

Trying to use this is not working and custom tiles are not shown although no error is thrown. Does anyone tried to use windows phone map control this way? If that's not the right approach which one is? Any workaround?

Thank you in advance!

Claudiu


回答1:


Have you set the Build Action on your image(s) to Content?




回答2:


The Exception is:

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)

How to get an image from IsolatedStorage, Ressource or MediaLibrary with UriKind.Absolute i not already found out ...maybe you know?




回答3:


This seems to be quite a FAQ problem - Map Tile Caching for Offline Viewing - shame there isn't an FAQ solution :/




回答4:


Did you try constructing an absolute file url using the app id as described in this question? Map Tile Caching for Offline Viewing




回答5:


I tried,

Did you try constructing an absolute file url using the app id as described in this question? Map Tile Caching for Offline Viewing

Map component is not showing me images, but simple

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

Is showing image...




回答6:


You can find a solution in the blog http://invokeit.wordpress.com/2012/06/30/bing-mapcontrol-offline-tiles-solution-wpdev-wp7dev/

In general, you just need

  1. Override GetUri function in TileSource class: return null to let MapLayerTile ignore this tile, and save the tile information to some background worker
  2. In the background worker, loading the tile from anywhere, either isolation storage or network, and then manually add it to a MapLayer control.


来源:https://stackoverflow.com/questions/4386391/windows-phone-7-map-control-with-custom-layer-in-offline-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!