Карты 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, вы можете просто предоставить точечный рисунок напрямую.