こんにちは、コタツです。
今回はXamarin Forms でルート検索を実装する方法を紹介します。
ルート検索は外部のGoogleのルート検索を利用しています。
Xamarin Forms側
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { /// <summary> /// ルート検索を行うインターフェースです。 /// </summary> public interface IRootSearch { void GoogleRootSearch(double lat, double log, Transportation transportation); } } |
Xamarin Formsの「DependencyService」の機能を使用して実装します。「DependencyService」とはiOS/Androidの各プラットフォーム固有の機能を実装する方法ですが、「DependencyService」の説明に関してはここでは省かせていただきます。
Xamarin Forms側でインターフェースを定義します。「GoogleRootSearch()」メソッドでGoogle Mapのルート検索を呼び出します。引数は「緯度」「経度」「交通手段」です。
Android側
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using Xamarin.Forms; using Sample; [assembly: Dependency(typeof(CRootSearchCtrl_Droid))] namespace Sample { /// <summary> /// Googleのルート検索を操作するクラスです。 /// </summary> public class CRootSearchCtrl_Droid : IRootSearch { #region メソッド /// <summary> /// Googleのルート検索を行うクラスです。 /// </summary> /// <param name="lat">緯度</param> /// <param name="log">経度</param> /// <param name="transportation">移動手段</param> public void GoogleRootSearch(double lat, double log, Transportation transportation) { // 経度緯度の情報を生成します。 string st = lat + "," + log; // 移動手段を設定します。 string sTrans = "d"; switch( transportation ) { case Transportation.Train: sTrans = "r"; break; case Transportation.Car: sTrans = "d"; break; case Transportation.Walk: sTrans = "w"; break; } // インテントを作成します。 Intent intent = new Intent(); intent.SetAction(Intent.ActionView); intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.driveabout.app.NavigationActivity"); // ルート検索のURLを生成します。 Android.Net.Uri uri = Android.Net.Uri.Parse("google.navigation:///?ll=" + st + "&q=表示名&mode=" + sTrans); intent.SetData(uri); CCommonModel_Droid.GetInstance().MainAct.StartActivity(intent); } #endregion } } |
Android側で外部のGoogle Mapのルート検索を呼び出します。引数の「r」は電車、「d」は車、「w」は徒歩の交通手段です。
Xamarin Formsでの呼び出し方法
1 2 |
var depemdemcy = DependencyService.Get<IRootSearch>(); depemdemcy.GoogleRootSearch(dLatitude, dLongitude, transportation); |
「DependencyService」を用いて呼び出します。
まとめ
今回はXamarin FormsでGoogle Mapのルート検索を呼び出す方法を紹介しました。今回もAndoroid版のみで申し訳ありません。Macを購入後に実装しますので実装後に追加させていただきます。