2016-09-09 13 views
2

UWP Bing Mapsアプリにカスタムマップタイルをロードする必要があります。ApplicationData.Current.LocalFolderからロードする必要があります。Bing Mapsがローカルのアプリデータからタイルをロードしていない

タイルがロードされておらず、マップが完全に黒い場合はどうなりますか。

いくつかのトラブルシューティングを行っているうちに、アプリパッケージのタイルが正常に読み込まれていて、問題がLocalFolderLocalCacheFolerにのみ関連していることがわかりました。

私がしたのは、アプリケーションパッケージからローカルフォルダに同じイメージをコピーすることでした(正しいものにコピーしています(実行時に生成され、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(); 
}; 

、これは何が起こるかです:

enter image description here

あなたが見ることができるようにアプリのパッケージ内の非常に同じファイルが正しくロードされている間、地元のタイルがロードされたとthy're無地の黒ではありません。

何が起こっているのか知っていますか?

答えて

2

ご意見ありがとうございます。 LocalMapTileDataSourceのアプリのローカルストレージを指し示すカスタムソースを提供するときに問題があるようです。この問題は社内で報告されており、進捗状況があれば回答を更新します。

さらに、LocalMapTileDataSourceはローカルストレージからタイルをロードできます。

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

するか、UriFormatStringのように設定します:私たちは、次のようにLocalMapTileDataSourceのコンストラクタでウリを指定することができ、これらの方法で

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

、ローカルからのタイルをロードすることができるはずですアプリデータ。

+0

返信いただきありがとうございます。私は 'UriFormatString'を設定する方法を知っていますが、OPのコードは単なる例です。実際のケースのシナリオは、カスタムのタイルレンダラーを構築することに関連していたので、私は 'UriRequested'ハンドラーでタイルを生成していて、後でそれらを再利用するためにキャッシュに保存しています。私が 'LocalData'に保存しても問題ありませんが、OneDriveのバックアップに追加すべきではないので、それらを' LocalCache'に保存する必要があります。 – StepTNT

+1

@StepTNTご意見ありがとうございます。私たちはこの問題を社内で記録しており、関連チームが調査中です。 –

+0

@ FranklinChen-MSFTこの問題は修正されましたか? – user1

0

あなたのシナリオでは、CustoMapTileSourceを試してみませんか?キャッシュフォルダにタイルを書き込み、URIをLocalMapTileDataSourceに供給するのではなく、ビットマップを直接供給することができます。

関連する問題