Xamarin.Forms 用の Googleマップライブラリです。
Xamarin.Forms.Maps をフォークして作っているので、使い方はほとんど同じです。
このライブラリの全ての機能が試せるデモアプリを以下より配信しています。このアプリのソースは XFGoogleMapSample です。
- Android DEMO Apps - このリンクをAndroidのブラウザで開いてください
- iOS DEMO Apps - Gitter かなにかでリクエストしてください(デバイスのUUIDを教えてもらう必要があります)
Xamarin公式の地図ライブラリ Xamarin.Forms.Maps は、非常に機能が少ないです(Googleマップ、Appleマップ、Bingマップで機能を共通化するのはとても難しいのでしょう)。
特に感じるのは、BingマップSDKがとてもチープなことです。ベクトルタイルでもないし、マーカーの吹き出し(InfoWindow )も無いようです。モバイルアプリの市場のほとんどは Android と iOS なのに、Bingマップのサポートは必要ないように感じます。また、iOS でも Appleマップ よりも Googleマップ を使用した方が、 Android/iOS で共通化しやすいと感じます。
このライブラリは、メインターゲットを iOS と Android だけに限定し、Xamarin.Forms.Maps でできない機能を実現するために作りました。
異なる地図SDKで実現可能な最小限の機能しか持たない Xamarin.Forms.Maps に対して、 同じ Google Maps で多くの共通機能を実現できるのが Xamarin.Forms.GoogleMaps です。
機能 | X.F.Maps | X.F.GoogleMaps |
---|---|---|
地図の種類 | Yes | Yes |
渋滞状況地図 | - | Yes |
地図イベント | - | Yes |
地図の移動(アニメーション付き) | Yes | Yes |
地図の移動(アニメーション無し) | - | Yes |
ピン | Yes | Yes |
カスタムピン | - | Yes |
ピンのドラッグ&ドロップ | - | Yes |
ポリゴン | - | Yes |
ライン | - | Yes |
円 | - | Yes |
カスタム地図タイル | - | Yes |
詳しくは、[Xamarin.Forms.Maps との比較](https://github.com/amay077/Xamarin.Forms.GoogleMaps/wiki/Xamarin.Forms.Maps との比較) を見て下さい。
- Available on NuGet: https://www.nuget.org/packages/Xamarin.Forms.GoogleMaps/
- PCLプロジェクトと各プラットフォームプロジェクトにインストールしてください
Platform | Supported |
---|---|
iOS Unified | Yes |
Android | Yes |
Windows 10 UWP | Yes (Bing map) |
その他 | No |
とほぼ同じです。
初期化メソッドが Xamarin.Forms.Maps.Init()
から Xamarin.Forms.GoogleMaps.Init()
に変更になっています。
iOS の場合、 Google Maps API for iOS の API キーを取得し、AppDelegate.cs
にて Init
に渡してください。
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
Xamarin.FormsGoogleMaps.Init("your_api_key");
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
}
UWP の場合、 Xamarin.Forms.GoogleMaps.UWP.dll の Assembly を Xamarin.Forms.Forms.Init()
に渡す必要があります。
// App.xaml.cs
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
if (rootFrame == null)
{
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
// Should add UWP side assembly to rendererAssemblies
var rendererAssemblies = new []
{
typeof(Xamarin.Forms.GoogleMaps.UWP.MapRenderer).GetTypeInfo().Assembly
};
Xamarin.Forms.Forms.Init(e, rendererAssemblies);
Xamarin.FormsGoogleMaps.Init("your_bing_maps_api_key");
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
Window.Current.Activate();
}
既定の名前空間が Xamarin.Forms.Maps
から Xamarin.Forms.GoogleMaps
に変更されています。他のAPIはすべて同じです。
サンプルプログラムが、
にあります。
Xamarin.Forms.GoogleMaps が使われているアプリを紹介します(他にもあったら 教えてください)。
by CINRA, Inc. |
|
|
|
by 新陽社 |
Releases または RELEASE_NOTES を見てください。
なるべく Xamarin.Forms.Maps の API に準じ、Google Maps固有の機能のみ API を追加するつもりです。
機能要望は、 @amay077 または、ISSUE やプルリクください! 追加機能案は以下の通りです。
Pin の InfoWindow の Visible プロパティv1.0.0で対応Pin のタップ&ホールドによる移動v1.5.0で対応Polygon, Polyline, Circle の描画サポートv1.1.0で対応- その他の機能改善リスト
Windows 10 UWP 対応は「とりあえず」残しました。 が、基本的には Android/iOS での Google Maps に最適化するので、UWP では未対応の機能が増えると予想されます。
私たちは、Xamarin.Forms.GoogleMaps への、あなたの貢献に大変感謝します。
開発に参加して頂ける方は、コントリビューション ガイドライン を読んで下さい。
Xamarin.Forms.GoogleMaps 開発の継続のため、寄付を募集しています。
Gumroad
Kyash
あなたの寄付で開発者のモチベーションが上がります、どうかよろしくおねがいします 🍣
LICENSE をみて下さい。
logo.png by alecive - CC BY-SA 4.0