AirMapView

さまざまな基盤の地図プロバイダーで地図ユーザーインターフェイスを提供するビューアブストラクション
1,806
執筆者エリック・ペッツェル

現在の多くの Android アプリケーションでは、ユーザーインターフェイスの一部として何らかのインタラクティブな地図が必要になります。Google はそのニーズを満たすためにネイティブパッケージと Google Play サービスによるエクスペリエンスを提供していますが、Play サービスを搭載せずにデバイスでインタラクティブな地図を作成する方法という問題が残ります。

一部の国では、Play サービスを搭載せずに販売されているデバイスが大多数です。Play サービスを搭載せずにデバイスを配送するデバイスメーカーは、世界中で人気を集めています。アプリケーションで真に国際的なエクスペリエンスを提供するためには、地図のような重要な機能は外せません。他の企業にも同じ問題があることを認識しているので、オープンソースの AirMapView を作成しました。

AirMapView は、Play サービスを搭載したデバイスとそうでないデバイスの両方でインタラクティブマップを提供するビューアブストラクションです。Google Play サービスを搭載したデバイスは Google マップ V2 を使用し、搭載していないデバイスでは Google マップの Web ベースの実装を使用します。すべて、ほとんどの開発者が慣れ親しんでいる Google マップ V2 の設計に基づいた単一の API として提供されます。

AirMapView では、デバイスで利用可能な最高の地図プロバイダーがデフォルトで選択されます。デフォルトでは、Google マップ V2 が使用可能な場合はそれを使用し、Google Play サービスが使用できない場合は WebView ソリューションにフォールバックします。API はユーザーに対して完全に透過的になるように設計されているため、開発者は fallback 機能を利用するために、現在 Google マップに使用しているのと同じ API を使用できます。

ネイティブ GoogleMap は、AirMapView 内の Fragment として実装されており、GoogleMap V2 を直接使用する場合とまったく同じ機能を提供します。GoogleMap から AirMapView への既存の実装の移植は、GoogleMap への呼び出しを AirMapView への呼び出しに置き換え、OnCameraChanged などの操作に対応した正しいコールバッククラスを実装するのと同じくらい簡単です。API はプラグ可能な設計になっており、開発者は Amazon Kindle Fire デバイス用の Amazon マップなど、特定のデバイス向けに独自のプロバイダーを追加できます。

フォールバックの Webview マップは Google マップを Android WebView 内に表示し、JavaScript ブリッジのコールバックを使用して、地図との動的な対話を可能にします。Webview であり、ネイティブコードではないため、ネイティブの GoogleMap ほどパフォーマンスは良くありませんが、Airbnb アプリのテストでは若干パフォーマンスが低下しただけです。

JavaScript ブリッジを使用すると、Web マップで同じ API を実装できるため、AirMapView がネイティブマップ用に実装されると、Web マップをサポートするためにクライアントコードを変更する必要はありません。

Web マップでは、場所の設定、中央への移動、マーカーの追加、ドラッグ、地図上のタップ、GoogleMap で現在サポートされている他の一般的な操作が許可されます。

AirMapView は、将来 Amazon Maps V2、Baidu、Mapbox などの追加の地図プロバイダーを簡単に追加できるように構築されています。

リンク