過去に2回ほどに分けて、Xamarinでクロスプラットフォームで使えそうな(使えるようになりそうな)オープンソース地図エンジンについて紹介してきましたが(第1回、第2回)、第2回で紹介したOsmSharpが格段に開発が進んで、もう実案件投入できるんじゃね?というくらいになってきました。
実ライブラリレポジトリだけでなく、サンプルのレポジトリもできて、メインのベクタ地図表示だけでなく以前は判りにくかったラスタタイルの表示サンプルもiOS/Android双方に用意され、非常にいい感じになっています。
サンプルを表示させるとこんな感じです(実際のサンプルは、デフォルトでマルチタッチ回転がオフになってるので、オンに変えて実行しています)。
びっくりするほどぬるぬる動くとか、そこまでではないですが、マルチプラットフォームで開発できるオープンソース、というメリットと天秤にかければ、十分採用を検討できる域に達しています。
もちろん、ちょっと触ってみるだけでもまだまだ課題はあって、
- タイルの隙間に少し白い線が入ってしまう時がある。座標計算で丸め誤差が出てる感じ。
- iOS版で、最初の画面表示に、何か操作しないと地図が表示されない事がある。
少しでもタッチしてやるか、全く動かなくてもいいのでViewDidLoad或いはAddSubView後に座標指定してやると、再描画される。 - 描画エンジン(プラットフォーム間共通)とUIライブラリ(各プラットフォーム別)が別の構成だが、UI側がまだ試行錯誤の段階のよう。
プラットフォーム毎に実装度に大分差がある感じ。
例えば、iOSだとダブルタップしてやると全世界からでも一気に最大ズームに飛んでしまうデフォルトズームイン動作(バグ?)があるので、それを抑制してやらないといけない状況だが、Androidだとダブルタップを取るイベントがそもそもまだなくて、シングルタップからダブルタップ検知を開発者側が組んでやらないといけない状況。 - マーカーのアンカーに指定できる場所が限られている。
等、直して欲しい所はたくさんあるのだけれど、育てば十分Xamarin界の標準地図エンジン化できるポテンシャルはあると思える。
何といっても、Managedだし。
一つ前の記事で書いたNetTopologySuiteもそうだし、このOsmSharpもそうだけど、なんかすごい勢いで開発が進んでて、状況が変化してる。
どっかから金がついてて、加速させてるんじゃないかと思うくらい。
別にMicrosoftから金が出てるんじゃないかと思うわけじゃないけど、例えばだけど、
- 完全にManagedでレスポンスも機能も十分な地図エンジンが、OsmSharpでもMSが開発してもいいけど完成して
- それの上に乗る地図が、OSMでもいいし、或いは商用用途ならばBingやNokiaも決して悪い地図ではないので提供されて
- それがXamarin、.NETの上だと、iOS/Android/Windowsまで視野に入れて完全にマルチプラットフォーム開発できる
という状況になると、少なくとも地図モバイルアプリ開発に関しては、流れが変わってくるんじゃないかなという感じがする。
まあ、妄想ですが。