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" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:XWpfV3" xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps" x:Class="XWpfV3.MainPage" NavigationPage.HasNavigationBar="False"> <StackLayout> <maps:Map/>
■ 実行
このように bing マップが表示されます。
■ NuGet パッケージ
補足として、WPF プロジェクトの NuGet は次のようになりました。
※執筆時
WPF はある視点で見れば現役人気最高のプラットフォームです。
簡単に試せますので、ぜひ試してみてください。