forusquareのvenueをKMLに変換するAPIを作ってみました。
やっていることは venueの詳細を取得するAPIを投げて、
KML形式に変換して吐き出しているだけです。
KMLを簡単に説明すると、
GoogleMapやGoogleEarth上で矢印やら線やら説明やらを記述・定義できるものとなります。
あとは軽くですがストリートビューともマッシュアップしています。
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
使い道があるかどうか微妙ですが一応。
KMLダウンロード
GoogleMapで開く
さて、androidでfoursquareを使用していると
地味に使いづらいところがちらほらあります。
まずは venue詳細。
venue詳細ページを開いても foursquare公式アプリは何の反応もしてくれないので、
ブラウザで開くことになります。
そのまま
全体表示
そのままだとでかすぎるし、全体表示だとまったく見えません。
しかも、画面をスクロールさせようとして、GoogleMapを触ってしまうと
GoogleMapが地味に反応してわけがわからないことになります。
せめて住所が簡単にコピーできれば
GoogleMapで検索しなおすということもできますが、結構ストレスがたまります。
(ちなみにこの灰色の領域はなんなのでしょうかね)
ということで、どうにかできないかと色々考えたのですが、
現在地からの経路検索やら電話発信など圧倒的に高機能なので、
公式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の強みですね。
ここでURLをキャッチしてGoogleMapを起動しなおしつつ、KML表示。
ここまで行くと、経路検索なども利用できます。
[…] foursquareのvenueからkmlへ変換 (+android) | trash-area.com […]