プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

Silverlightで地図にTileを追加したりしてみる

f:id:puni-o:20160421113536j:plain

puni-o.hatenablog.com

puni-o.hatenablog.com

Silverlight版です。(次はXamarin.Androidだと思った?ねぇ思った?)

すでにオワコンSilverlight情報なんて誰得(多分私の得にもならない)ですがまぁネタということと、TMSにかかわるきっかけでもあったので書いておかないとね!

使うのはMicrosoft.Maps.MapControl.Mapです。 とりあえず表示するところまで準備します。

f:id:puni-o:20160421115125p:plain

懐かしい。そして余りのヌルヌル動作にびっくり。(試せる人は試してみてほしい) これだけ軽快に動くのになくなっちゃうのはもったいないですね。

Open Street Mapを追加する

他の例と同じように追加してみます。

public class CustomTileSource : TileSource
{
    public override Uri GetUri(int x, int y, int zoomLevel) => 
        new Uri($"http://tile.openstreetmap.org/{zoomLevel}/{x}/{y}.png");
}

TileSourceを継承してGetUriをオーバーライドします。

あとはこれを追加してあげるだけ。

var mode = Map.Mode as MercatorMode;
var mapLayer = mode.Content as MapTileLayer;
mapLayer.TileSources.Add(new CustomTileSource());

Mapインスタンス名です。

実行すると

f:id:puni-o:20160421115911p:plain

できました。

既定の地図を変更する

変更するというか既定の地図を削除するです。

var mode = Map.Mode as MercatorMode;
var mapLayer = mode.Content as MapTileLayer;
mapLayer.TileSources.Clear();
mapLayer.TileSources.Add(new CustomTileSource());

TileSourcesに既定の地図がすでに入っているので、追加前に消せばOK。

自分で描いたタイルの追加

カスタムソースのタイルって書いていたけど、意味が違う気がするので・・。

んでやり方は知りません。

できないんじゃない?

続く・・・