Карты Bing не загружают плитки из локальных данных приложения

Мне нужно загрузить пользовательские листы карты в мое приложение Bing Maps UWP, и мне нужно загрузить их из ApplicationData.Current.LocalFolder,

То, что происходит, - то, что плитки не загружены, и карта полностью черная.

В процессе устранения неполадок я заметил, что плитки из пакета приложения были загружены нормально, и проблема была связана с LocalFolder а также LocalCacheFoler только.

Поэтому я скопировал одно и то же изображение из пакета приложения в локальную папку (я копирую в правильное изображение, даже протестировано с изображениями, созданными во время выполнения и сохраненными в LocalFolder) и использовать этот код в качестве источника листов:

var localTileSource = new LocalMapTileDataSource();
localTileSource.UriRequested += async (s, e) =>
{
    var deferral = e.Request.GetDeferral();                                                           
    e.Request.Uri = (new Random().NextDouble() < 0.5) ? new Uri("ms-appdata:///local/background.png") : new Uri("ms-appx:///Assets/background.png");
    deferral.Complete();
};

и вот что происходит:

Как вы можете видеть, локальные плитки не загружены, и вы просто черные, в то время как тот же файл в пакете приложения загружен правильно.

Кто-нибудь знает, что происходит?

2 ответа

Спасибо за ваш отзыв. Кажется, есть некоторая проблема при предоставлении пользовательского источника, который указывает на локальное хранилище приложения для LocalMapTileDataSource. Мы сообщили об этой проблеме внутренне, и я обновлю свой ответ, как только будет достигнут какой-либо прогресс.

Кроме того, LocalMapTileDataSource Можно загружать плитки из локального хранилища. Мы можем указать Uri в конструкторе LocalMapTileDataSource как следующее:

LocalMapTileDataSource localTileSource = new LocalMapTileDataSource("ms-appdata:///local/background.png");

Или установите UriFormatString как:

LocalMapTileDataSource localTileSource = new LocalMapTileDataSource();
localTileSource.UriFormatString = "ms-appdata:///local/background.png";

Таким образом, вы сможете загружать плитки из локальных данных приложения.

Для вашего сценария, почему бы вам не попробовать использовать CustoMapTileSource? Вместо записи плиток в папку кэша и предоставления URI в LocalMapTileDataSource, вы можете просто предоставить точечный рисунок напрямую.

Другие вопросы по тегам