Google mapsの利用法〜URLスキーム編

Google Maps for iOSがついに公開されました.
iOS6を利用していた方は待ちに待った日なのではないでしょうか.
さらにGoogleは,他のアプリからGoogle Mapsを利用できるようにしてくれています.
URLスキームを利用する方法と,SDKを利用する方法です.

URLスキームを利用してGoogle Mapsを利用するのは比較的簡単です.

ここに書いてありますが,ざっくりと説明します.

まず,URLスキームでGoogle Mapsを利用するためには,当然自分の端末にGoogle Mapsが入っていないといけません.ですので,

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]];

というコードで,URLスキームが利用可能かをチェックします.利用可能な時のみ,処理を続けるということになります.

URLスキームで利用できるGoogle Mapsの機能は,
・地図機能
・検索機能
・ナビ機能
の3つです.

まず,地図機能ですが,地図機能では以下のパラメタを設定します.
zoom:   マップのズームレベルを規定します.
center:  マップの中心を規定します.緯度,経度の順で指定します.
mapmode: 通常のビューの場合はstandardを,ストリートビューの場合はstreetviewを指定します.
views:   特定のビュー(satellite,traffic,transit)のon/offを指定します.

たとえば,

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]){
        NSString *stringURL = @"comgooglemaps://?center=34.68444,135.827415&zoom=14&views=traffic";
        NSURL *url = [NSURL URLWithString:stringURL];
        [[UIApplication sharedApplication] openURL:url];
}

というコードを埋め込めば,自分のアプリ内で
IMG_0133
このように,Google Mapsを開くことができます.

検索を行うには,qパラメータを使います.

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]){
        NSString *stringURL = @"comgooglemaps://?q=%e9%a7%85&center=34.68444,135.827415&zoom=14&views=traffic";
        NSURL *url = [NSURL URLWithString:stringURL];
        [[UIApplication sharedApplication] openURL:url];
}

クエリは適切にURLエンコードされている必要があります.上記の例は,「駅」というクエリをURLエンコードしています.

IMG_0134

こんな感じです.

最後に,ナビゲーションです.ナビゲーションは以下のパラメタで規定されます.
saddr: 始点を指定します.緯度経度で指定することも可能ですし,適切にフォーマットされた文字でも可能です.
daddr: 終点を指定します.
directionsmode: 移動手段を指定します.driving,transit,walkingです.

例えば,「近鉄奈良駅」を始点,「新宿駅」を終点,移動手段を電車と指定すると,

if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"comgooglemaps://"]]){
        NSString *stringURL = @"comgooglemaps://?saddr=%e8%bf%91%e9%89%84%e5%a5%88%e8%89%af%e9%a7%85&daddr=%e6%96%b0%e5%ae%bf%e9%a7%85&directionsmode=transit";
        NSURL *url = [NSURL URLWithString:stringURL];
        [[UIApplication sharedApplication] openURL:url];
}

IMG_0135

このような結果になります.

SDKを使うよりもはるかに楽ですが,ユーザがGoogle Mapsを入れているか否かに依存してしまうのが難点ですね.

カテゴリー: iOSアプリ開発, 技術的なこと パーマリンク