Maps SDK for Android ユーティリティ ライブラリ

マップに追加する高度な機能をお探しですか。Maps SDK for Android ユーティリティ ライブラリは、幅広いアプリケーションで役立つクラスのオープンソース ライブラリです。GitHub リポジトリには、ユーティリティ クラスと、各クラスの使用法を示すデモアプリが含まれています。

この動画では、Chris Broadfoot が、ポリラインのデコード、球面幾何学、バブルアイコンを中心に、ユーティリティ ライブラリについて説明します。

クイック セットアップ

Maps SDK for Android ユーティリティ ライブラリをインストールするには、設定ガイドに従ってください。

ユーティリティ

GeoJSON レイヤを含むマップ

マップに GeoJSON をインポートする

対象物を GeoJSON 形式で保存し、このユーティリティを使用して、それらをレイヤとしてマップ上にレンダリングすることができます。addLayer() を呼び出して GeoJSON データをマップに追加します。 addFeature() を呼び出し、GeoJsonFeature オブジェクトを渡して、対象物を個別に追加することもできます。

詳しくは、Google マップ Android GeoJSON ユーティリティのドキュメントをご覧ください。

KML レイヤを含むマップ

マップに KML をインポートする

このユーティリティを使用すると、KML オブジェクトを地理的図形に変換して、マップ上にレイヤとしてレンダリングできます。addLayerToMap() を呼び出して、マップにレイヤを追加します。任意の Placemark、GroundOverlay、Document、または Folder で getProperties() を呼び出して、KML オブジェクトのプロパティにアクセスできます。

詳しくは、Google マップ Android KML ユーティリティのドキュメントをご覧ください。

ヒートマップを含むマップ

マップにヒートマップを追加する

ヒートマップを使うと、マップ上のデータポイントの分布と相対密度を閲覧者にわかりやすく示すことができます。各場所にマーカーを配置するのではなく、ヒートマップでは色と図形を使用してデータの分布を表します。HeatmapTileProvider を作成し、マップ上のスポットを表す LatLng オブジェクトのコレクションをそれに渡します。次に、新しい TileOverlay を作成し、これにヒートマップ タイル プロバイダを渡して、マップにタイル オーバーレイを追加します。

詳しくは、Google マップ Android ヒートマップ ユーティリティのドキュメントをご覧ください。

バブルアイコンを含むマップ

バブルアイコンでマーカーをカスタマイズする

IconGenerator を追加して、マーカーに情報のスニペットを表示します。このユーティリティを使用すると、マーカー アイコンを情報ウィンドウのように見せ、マーカー自体にテキストやその他のコンテンツを含めることができます。これには、複数のマーカーを同時に開いておくことができるというメリットがあります。情報ウィンドウの場合は、一度に 1 つしか開くことができません。マーカーのスタイルを設定したり、マーカーやコンテンツの向きを変更したり、マーカーの背景画像や 9-patch を変更したりすることもできます。

クラスタリングされたマーカーのあるマップ

マーカー クラスタを管理する

ClusterManager を使うと、さまざまなズームレベルで複数のマーカーを管理できます。つまり、マップを見づらくすることなく、マップ上に多数のマーカーを配置できるということです。ユーザーが高いズームレベルでマップを表示すると、個別のマーカーがマップ上に表示されます。ユーザーが低いズームレベルにズームアウトすると、マーカーがまとまってクラスタになり、マップが見やすくなります。

詳しくは、Google マップ Android マーカー クラスタリング ユーティリティのドキュメントをご覧ください。

複数のレイヤを含むマップ

同じマップに複数のレイヤを追加する

GeoJSON、KML、クラスタの対象物に加えて、独自のマーカー、ポリライン、ポリゴンをすべて同じマップに表示できます。これらのレイヤは、各レイヤにクリック リスナーを追加することでインタラクティブにすることもできます。 MarkerManagerGroundOverlayManagerPolygonManagerPolylineManager のクラスを単純にインスタンス化し、設定時に GeoJsonLayerKmlLayerClusterManager のコンストラクタに渡します。それから、上記の Manager クラスを直接使って、独自のマーカー、ポリライン、ポリゴンをマップに追加することができます。

詳しくは、Google マップ Android マルチレイヤ デモのドキュメントをご覧ください。

エンコードされたポリラインを含むマップ

ポリラインをエンコードおよびデコードする

PolyUtil は、エンコードされたポリラインやポリゴンを緯度 / 経度の座標に変換したり、その逆の変換を行ったりする場合に役立ちます。

Google マップでは、ポリラインまたはポリゴンを定義する緯度と経度の座標は、エンコードされた文字列として保存されます。詳しくは、ポリラインのエンコードに関する説明をご覧ください。Directions API などの Google API からのレスポンスで、このエンコードされた文字列を受け取ることがあります。

Maps SDK for Android ユーティリティ ライブラリの PolyUtil を使って、一連の緯度と経度の座標(「LatLngs」)をエンコードされたパス文字列にエンコードし、エンコードされたパス文字列を一連の LatLngs にデコードできます。これにより、Google Maps API ウェブサービスとの相互運用性が保証されます。

マップ上の 2 地点間の計算された距離

球面幾何学を使用して、距離、面積、方向を計算する

SphericalUtil の球面幾何学ユーティリティを使用すると、緯度と経度に基づいて距離、面積、方向を計算できます。このユーティリティで使用できるメソッドのいくつかを次に示します。

  • computeDistanceBetween() - 2 つの緯度と経度の座標間の距離をメートル単位で返します。
  • computeHeading() - 2 つの緯度と経度の座標間の方向指定を度数で返します。
  • computeArea() – 地球上の閉じられたパスの面積を平方メートル単位で返します。
  • interpolate() - 特定の 2 地点間の距離の比率で指定された、その 2 地点間にある地点の緯度と経度の座標を返します。たとえば、これを使用して 2 点間のマーカーにアニメーションを付けられます。

ユーティリティのすべてのメソッドのリストについては、リファレンス ドキュメントをご覧ください。