アプリの紹介
神戸市内に設置されているAED装置の場所を地図上で確認出来るアプリをリリースしました。
いざというときのために、普段からよく訪れる場所の近くのAEDの設置位置を確認できるアプリです。
https://itunes.apple.com/jp/app/aed-map-kobe/id1014900187?mt=8&uo=4&at=10lbKi
アプリの特徴
地図上で、現在位置付近のAEDの位置が確認できます。
縮小表示時もさくさくスクロールします
こういうアプリでは、地図上にたくさんのポイントがある場合、よく表示がもたついたりすることがありますが、このアプリでは縮小時には複数のポイントをまとめて表示することで、さくさくと地図を移動できます。
住所からも検索できます
区と町名からも検索できます。
Code for Kobeと神戸市オープンデータについて
筆者は昨年暮れから「Code for Kobe」という活動に参加しています。といっても、定例の会合に参加して他地域の活動などを聞いている程度で、特段なにか活動しているというわけではありませんでした。
そんな中、神戸市が庁内でもっているデータをオープンデータとして公開するということを知り、筆者の専門であるiOSアプリにむいていて、社会的意義が高そうなものを探してみたところ、AEDの設置データを見つけた次第です。
技術的アピールポイント
前作のPM2.5表示アプリ「大気くん」で、大気汚染測定局の位置と、その場所のPM2.5測定値を地図上に表示させる機能を実装しました。このアプリは日本全域が表示対象になるため、大きな領域を縮小して表示することが多いのですが、縮小率が高いと、地図上に表示させる点が多すぎて、画面操作がフリーズしてしまう症状が出てしまいました。
「大気くん」では一定以上の縮小率では測定局を表示しないという仕組みでこの問題を回避しました。
今回のアプリの開発にあたって、近傍に複数の地図上の点を集約して表示するライブラリ「ADCClusterMapView」の存在を知り、採用してみました。
このライブラリは、クラスタ化のアルゴリズムとして「kd木」を使っています。
他にも「kd木」を使っているライブラリは存在するようですが、このライブラリが優れている点は、各地点の緯度経度の座標をそのまま使ってクラスタリングを行うのではなく、主成分分析を用いて、基底を回転させることでクラスタリングさせる地点群の選択を最適化している点です。
作者のブログに詳しく書かれているので興味のある方は読んでみてください。
Too many pins on your map? — Applidium
というわけで、このところ公私ともにGISづいておりまして、わりとノウハウもたまってきました、位置情報関連のアプリに興味のあるかたは是非ともご相談ください。