Xamarin.Forms では MAP コントロールも扱えますが、少し注意が必要です。
使い方としては NuGet で Xamarin.Forms.Maps
を取得してよしなにしてやればよいだけです。
しかし、そこではまってしまいました。
■ はまったポイント
NuGet パッケージは、Xamarin.Forms.Maps
です。
そこで間違えて Xamarin.Forms.Map
と最後の s を抜いて検索をしていました。
きちんと最後の s まで合ってないと検索で出てこないんですね...。
適当にではなく、きちんと調べて確実にコピペしていれば問題ない点ですが、私と同じ失敗をする方がいらっしゃるかもしれませんので、恥を忍んでメモしておきます。
■ WPF の場合
Xamarin.Forms.WPF のばあいはさらに、NuGet から Xamarin.Forms.Maps.WPF
も追加する必要があります。
※Map コントロールを使用するしないにかかわらず、Xamarin.Forms.WPF の場合にはさらに Xamarin.Forms.Platform.WPF
■ その後の手順
NuGet からパッケージを取得しただけでは、画面に地図は出てきません。もう少し手順が必要です。
■ FormsMaps.Init() メソッド
まず、起動時のコードでいったん Xamarin.Forms.Maps
内の Init
メソッドを呼びます。
これを書いておかないと、
Xamarin.Forms.WPF では マップが表示されません。
■ XAML の xmlns の追加
MAP コントロールは、独自のアセンブリ、名前空間になっているため、XAML で使用する場合、名前空間の指定をする必要があります。
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
コントロールを使うところでは、次のようになります。
<maps:Map/>
全体としては次のようになります。
この例では、プロジェクト名を XWpfV3 として作成しています。
xml version="1.0" encoding="utf-8"
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlnsx="http://schemas.microsoft.com/winfx/2009/xaml"
xmlnslocal="clr-namespace:XWpfV3"
xmlnsmaps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
xClass="XWpfV3.MainPage"
NavigationPageHasNavigationBar="False">
<StackLayout>
<mapsMap/>
■ 実行
このように bing マップが表示されます。
■ NuGet パッケージ
補足として、WPF プロジェクトの NuGet は次のようになりました。
※執筆時
WPF はある視点で見れば現役人気最高のプラットフォームです。
簡単に試せますので、ぜひ試してみてください。