Windows Phone 7 Map Control с пользовательским слоем в автономном режиме - PullRequest
7 голосов
/ 08 декабря 2010

Привет WP7 мобильных страстных разработчиков!

Я пытаюсь использовать элемент управления Bing Map по умолчанию из элементов управления Windows Phone. В частности, я пытаюсь использовать пользовательский TileSource для предоставления пользовательской мозаичной карты, которая будет храниться в проекте в виде папки (файлы содержимого) или в изолированном хранилище.

Вниз я представляю пользовательский класс, который я пытаюсь использовать с плитками / изображениями карты, хранящимися в папке «карта» в формате хранения ZXY, как файлы содержимого.

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 Phone Map Control таким образом? Если это не правильный подход, какой? Любой обходной путь?

Заранее спасибо!

Клаудиу

Ответы [ 6 ]

2 голосов
/ 20 мая 2011

Вы пытались создать абсолютную ссылку на файл, используя идентификатор приложения, как описано в этом вопросе? Кэширование тайла карты для автономного просмотра

2 голосов
/ 28 февраля 2011

Похоже, это проблема с часто задаваемыми вопросами - Кэширование тайла карты для автономного просмотра - позор, что решения по часто задаваемым вопросам нет: /

2 голосов
/ 14 декабря 2010

Исключение составляет:

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)

Как получить изображение из IsolatedStorage, Ressource или MediaLibrary с UriKind. Абсолютно я еще не выяснил ... может быть, вы знаете?

2 голосов
/ 08 декабря 2010

Вы установили действие «Построение» для ваших изображений на Content?

1 голос
/ 06 января 2012

Я пытался,

Вы пытались создать абсолютную ссылку на файл, используя идентификатор приложения, как описано в этом вопросе? Кэширование тайла карты для автономного просмотра

Компонент карты не показывает мне изображения, а просто

Image.Source = new BitmapImage (новый Uri ("файл: ///Applications/Install/0277CC52-888B-4593-A28D-4CFF818E81E7/Install/maps/-1040122162.jpg", UriKind.Absolute));

Показывает изображение ...

0 голосов
/ 21 августа 2013

Вы можете найти решение в блоге http://invokeit.wordpress.com/2012/06/30/bing-mapcontrol-offline-tiles-solution-wpdev-wp7dev/

В общем, вам просто нужно

  1. Переопределить функцию GetUri в классе TileSource: вернуть ноль, чтобы MapLayerTile игнорировал эту плиткуи сохраните информацию о плитке для некоторого фонового работника
  2. В фоновом работнике загрузите плитку из любого места, будь то изолированное хранилище или сеть, а затем вручную добавьте ее в элемент управления MapLayer.
...