#foursquare でチェックインした都道府県を塗りつぶしてくれる地図機能欲しい。MapKitでそんな事できるかな
— Og🌗エンジニア🏝宮崎 (@koogawa)2014年5月5日
思いつきでこんなツイートをしてみたのですが、なんとか無事に完成させることができました。
最初は自分用に作った物なのですが、何人かの方から「面白そう」という嬉しいお言葉を頂き、せっかくなので公開してみました。下記のリンクからご利用いただけます。
10人ぐらい使ってもらえたら嬉しいな、と思っていたのですが、気付いたら100人以上の方が使ってくれているようです!どうもありがとうございますm(_ _)m
(5/10 22:41 追記)ユーザー数1000人突破しました!\(^o^)/
せっかくなので、実装方法をメモしておきます。
今回の肝となる「地図を塗りつぶす」という機能をどうやって実現するか?
ここが一番苦労するだろうな〜と考えていたのですが、id:pomu0325 さんから非常にありがたい情報が。
@koogawagoogle chartのgeochart使うと簡単https://t.co/i5utT09Kvg
— 🐶pomu0325 (@pomu0325)2014年5月5日
どうやらGoogle さんが提供している Geochart というのを使えば簡単に実装できそうです。
Visualization: GeoChart | Charts | Google Developers
さっそく使い方を調査。
<html><head><scripttype='text/javascript'src='https://www.google.com/jsapi'></script><scripttype='text/javascript'> google.load('visualization','1',{'packages':['geochart']}); google.setOnLoadCallback(drawRegionsMap);function drawRegionsMap(){var data = google.visualization.arrayToDataTable([['Country','Popularity'],['Germany',200],['United States',300],['Brazil',400],['Canada',500],['France',600],['RU',700]]);var options ={};var chart =new google.visualization.GeoChart(document.getElementById('chart_div')); chart.draw(data, options);};</script></head><body><divid="chart_div"style="width: 900px; height: 500px;"></div></body></html>
なんとこれだけで地図が塗りつぶせるようです!
つまり、私がやることは、次のようなデータを用意するだけ。
var data = google.visualization.arrayToDataTable([['Prefecture'],['Tokyo'],['Osaka'],['Hokkaido']]);
ベニューリストの取得には、foursquare のvenuehistory API を使いました。
このAPIを使えば、ユーザが今までにチェックインしたすべてのベニューを一度に取得することができます。どんな形式で返ってくるかは、foursquareデベロッパーサイトのAPIExplorer で試すことができます。(要ログイン)
このレスポンスをうまく加工して、先ほどの GeoChart に渡してやれば完成です!
公開後、すぐに兵庫県、高知県、大分県がうまく塗りつぶされないというレポートが寄せられました。
原因は、foursquareから返ってくるデータが「Hyōgo」「Kōchi」「ōita」のように「ō」を含んでいるため、GeoChartが正しい県名として認識できないためでした。
この問題に対しては、「ō」を「o」に一括変換するという(雑な)方法で対応しましたw
久しぶりにWebアプリを作りましたが、作ったものを即時公開できるというのはWebの強みだな~と改めて感じました。(iOSアプリだと審査やらリジェクトやらでやたらと時間がかかる…)
また何か思いついたら開発したいと思います。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。