こんにちは、コタツです。
以前はXamarin FormsのAndroid版でルート検索を実装する方法を紹介しましたが、今回はXamarin FormsのiOS版でルート検索を実装する方法を紹介します。
ルート検索は外部のGoogleのルート検索を利用しています。Google mapをインストールしていることが前提です。
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 CommonFunction { /// <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のルート検索を呼び出します。引数は「緯度」「経度」「交通手段」です。
iOS側
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 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Xamarin.Forms; using CommonFunction; using Foundation; using UIKit; [assembly: Dependency(typeof(CRootSearchCtrl_iOS))] namespace CommonFunction { public class CRootSearchCtrl_iOS : 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 = "driving"; switch (transportation) { case Transportation.Train: sTrans = "transit"; break; case Transportation.Car: sTrans = "driving"; break; case Transportation.Walk: sTrans = "walking"; break; } NSUrl checkMap = new NSUrl("comgooglemaps://"); string sURL = @"comgooglemaps://?saddr=" + lat + "," + log + "&directionsmode=" + sTrans; NSUrl rootMap = new NSUrl(sURL); if (UIApplication.SharedApplication.CanOpenUrl(checkMap)) { UIApplication.SharedApplication.OpenUrl(rootMap); } else { var alert = new UIAlertView("警告", "GoogleMapがインストールされていません。GoogleMapをインストールしてください。", null, null, "OK"); alert.Show(); } } #endregion } } |
iOS側で外部のGoogle Mapのルート検索を呼び出します。引数の「directionsmode」は「transit」は電車、「driving」は車、「walking」は徒歩の交通手段です。
info.plistに追加
1 2 3 4 |
<key>LSApplicationQueriesSchemes</key> <array> <string>comgooglemaps</string> </array> |
Google Mapへのアクセスを許可してください。
Xamarin Formsでの呼び出し方法
1 2 |
var depemdemcy = DependencyService.Get<IRootSearch>(); depemdemcy.GoogleRootSearch(dLatitude, dLongitude, transportation); |
まとめ
今回はXamarin FormsでiOS版のGoogle Mapのルート検索の呼び出し方法を紹介しました。
Android版と引数など違うところがあるので注意してください。