trash-area.com ≫ blog ≫ androidfoursquareのvenueからkmlへ変換 (+android)

2010年10月11日 1

forusquareのvenueをKMLに変換するAPIを作ってみました。
やっていることは venueの詳細を取得するAPIを投げて、
KML形式に変換して吐き出しているだけです。

KMLを簡単に説明すると、
GoogleMapやGoogleEarth上で矢印やら線やら説明やらを記述・定義できるものとなります。

あとは軽くですがストリートビューともマッシュアップしています。

api

http://trash-area.com/util/venue2kml.php?venue=[url]

[url] .. http://foursquare.com/venue/[0-9]+
厳密には ^.*\/venue\/[0-9]+$ になります。

動作サンプル

サンプル。venue[ユニクロ 新宿西口店]
foursquare :: ユニクロ 新宿西口店 :: 新宿区, 東京

KMLダウンロード(GoogleEarthで開けます)
http://trash-area.com/util/venue2kml.php?url=http://foursquare.com/venue/701050

GoogleMapで開く。
http://maps.google.co.jp/maps?z=17&q=http://trash-area.com/util/venue2kml.php?url=http://foursquare.com/venue/701050

bookmarklet

使い道があるかどうか微妙ですが一応。
KMLダウンロード
GoogleMapで開く

ここからは androidです。

さて、androidでfoursquareを使用していると
地味に使いづらいところがちらほらあります。

まずは venue詳細。
venue詳細ページを開いても foursquare公式アプリは何の反応もしてくれないので、
ブラウザで開くことになります。

image_fs001そのまま image_fs002全体表示
そのままだとでかすぎるし、全体表示だとまったく見えません。

しかも、画面をスクロールさせようとして、GoogleMapを触ってしまうと
GoogleMapが地味に反応してわけがわからないことになります。
せめて住所が簡単にコピーできれば
GoogleMapで検索しなおすということもできますが、結構ストレスがたまります。
image_fs004
(ちなみにこの灰色の領域はなんなのでしょうかね)

ということで、どうにかできないかと色々考えたのですが、
現在地からの経路検索やら電話発信など圧倒的に高機能なので、
公式GoogleMapアプリにKMLを連動させることにしました。
(インテントフィルターとインテントを利用してぶん投げることにします)

ちなみに、以下でGoogleMapを起動した後に、KMLを表示させることができます。

am start -a android.intent.action.VIEW -d geo:0,0?q={KMLのURL}

AndroidManifest.xml に以下のintent-filterを追加します。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:scheme="http"
        android:host="foursquare.com"
        android:pathPattern="\\/venue\\/.*"
        />
</intent-filter>

これで、http://foursquare.com/venue/? を開こうとしているタイミングを
トリガーして、割り込むことが可能です。

その後は、上記のAPIを叩いた形でGoogleMapを起動するインテントを発行。

public class main extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        Intent intent = getIntent();
        Uri uri = intent.getData();
        if (uri == null) {
            finish();
            return;
        }
 
        String newUri = "geo:0,0?q=http://trash-area.com/util/venue2kml.php?url=venue/"
                                   + uri.getLastPathSegment();
 
        Intent gi = new Intent(Intent.ACTION_VIEW, Uri.parse(newUri));
        startActivity(gi);
 
        finish();
    }
}

と、ここまでやると venueの詳細ページを開く時にGoogleMapで開けるようになります。
(本当はだいぶ放置しているPipedroidでやろうかと思ったんですがやる気になれませんでした)

一応、テンプレートに上だけ追加すれば出来上がり~で、
アイコンもデフォ状態なアプリですが一応公開しておきました。
venue2gmap

使い方

Twitterなどから foursquareのvenueページへ飛びそうな時に割り込みます。
リクエストの前で割り込めるのはandroidの強みですね。
image_fs005 image_fs006

ここでURLをキャッチしてGoogleMapを起動しなおしつつ、KML表示。
image_fs007

ここまで行くと、経路検索なども利用できます。
image_fs008 image_fs009

ソーシャルブックマーク
はてな Livedoor del.icio.us
関連してそうな記事
同じカテゴリーの別の記事
タグ
, ,
トラックバックURL
  1. […] foursquareのvenueからkmlへ変換 (+android) | trash-area.com […]

コメント
1件のコメント

Comment RSS

コメントをどうぞ

*反映されるまでに時間がかかることがあります。
*メールアドレスはアバターの使用に使います。