強火で進め

このブログではプログラム関連の記事を中心に書いてます。

アプリからGoogleマップの経路検索を実行する方法


定期的にチェックしているJeff LaMarcheさんのブログで中々、興味深い内容をやっていたので紹介。

iPhone Development: Mapping Directions from your App
http://iphonedevelopment.blogspot.com/2009/02/mapping-directions-from-your-app.html

内容としては「Googleマップの経路検索」をアプリで使うというものです。

使い方はいたって簡単で以下の様なURLを openURL で開くだけです。

http://maps.google.com/maps?saddr=[source address or coordinates]&daddr=[destination address or coordinates]

saddr= に出発地点、daddr= に到着地点を指定するだけでOKの様です。

しかも

saddr=35.616209,140.114307

の様な緯度、経度での指定の他、「東京駅」という文字列をURLエンコーディングして以下の様に指定することも可能です。

saddr=%e6%9d%b1%e4%ba%ac%e9%a7%85

以下にいくつか例を挙げておきます(実際、iPhoneでタップすると確認できます)。

  • 緯度、軽度で指定(千葉駅→成田空港)

http://maps.google.com/maps?saddr=35.616209,140.114307&daddr=35.776879,140.388279

  • 文字列で指定[英語](tokyo→osaka)

http://maps.google.com/maps?saddr=tokyo&daddr=osaka

  • 文字列で指定[日本語](東京駅→上野駅)

http://maps.google.com/maps?saddr=%e6%9d%b1%e4%ba%ac%e9%a7%85&daddr=%e4%b8%8a%e9%87%8e%e9%a7%85

プログラムからGoogleマップを呼ぶ、場合以下の様になります。

- (IBAction)run:(id)sender
{
    NSString* fromString = fromAddress.text;
    NSString* toString = toAddress.text;
    NSString* url;

    url = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@",
           [fromString gtm_stringByEscapingForURLArgument], 
           [toString gtm_stringByEscapingForURLArgument]];
    NSLog(@"url:%@", url);
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}

テキストフィールドに入力された「出発地点」「到着地点」をURLエンコーディングしたものをGoogleマップの引数にして openURL を実行するだけです。

URLエンコーディングは以前紹介したGoogle Toolbox for Macを使っています。こちらにつてはこのエントリーを参照下さい。

Google Toolbox for Macを使って日本語メールを簡単に送る - 強火で進め
http://d.hatena.ne.jp/nakamura001/20090212/1234431126

なお、今回のサンプルはこちらに置いておきます。

こんなに簡単に作成可能なのでみなさんも自分のアプリでどんどん使ってみては如何でしょうか。

関連情報

(2009/03/04 追記)ちゃんと更新のドキュメントもあるのね(^_^;)
Apple公式のドキュメント

Apple URL Scheme Reference: Map Links
http://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html#//apple_ref/doc/uid/TP40007894

Googleマップのパラメータ情報がまとめらているWiki

You could use this to perform an off-centre busness search.
http://mapki.com/wiki/Google_Map_Parameters