以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Maps Android API をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Maps Android API をアクティベートする
  3. 適切なキーを作成する
続ける

Google マップ Android GeoJSON ユーティリティ

  1. はじめに
  2. マップに GeoJsonLayer を追加する
  3. GeoJsonLayer を削除する
  4. GeoJsonFeature を追加および削除する
  5. GeoJsonFeatures とそのプロパティにアクセスする
  6. GeoJsonLayer と GeoJsonFeatures のスタイルを設定する
  7. デモアプリを見る

はじめに

GeoJSON は JSON データ形式の拡張で、地理的データを表します。このユーティリティを使用して、GeoJSON 形式で地理的な地物を保存し、それらをマップ上にレイヤーとしてレンダリングすることができます。マップに GeoJSON データを追加したり、マップからこのデータを削除したりするには、それぞれ addLayer()clearLayer() を呼び出します。同様に、addFeature()removeFeature() を呼び出し、GeoJsonFeature オブジェクトを渡して、個々の地物を追加および削除できます。地物にアクセスするには、getFeatures() を呼び出して、レイヤーに追加されているすべての GeoJsonFeature オブジェクトの iterable を取得します。

getDefaultPointStyle()getDefaultLineStringStyle()、または getDefaultPolygonStyle() を呼び出し、それぞれにスタイル オプションを設定して、地物をレイヤーに追加する前に、地物に適用するデフォルトのスタイルを設定することもできます。または、地物で setPointStyle()setLineStringStyle()、または setPolygonStyle() を呼び出し、該当するスタイル オブジェクトを渡すことで、個々の GeoJsonFeature にスタイルを設定することもできます。

マップに GeoJsonLayer を追加する

マップに GeoJson レイヤーを追加するには、まず GeoJsonLayer クラスのインスタンスを作成します。GeoJsonLayer をインスタンス化するには、2 つの方法があります。

JSONObject からインポートする場合は、次のものが必要です。

  • レイヤーがレンダリングされる GoogleMap オブジェクト
  • レイヤーに追加する GeoJSON データを含む JSONObject
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

ローカル GeoJSON ファイルからインポートする場合は、次のものが必要です。

  • レイヤーがレンダリングされる GoogleMap オブジェクト
  • GeoJSON データを含むローカル リソース ファイル
  • Context オブジェクト。これは、ローカル リソース ファイルを開くために必要です。
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());

GeoJsonLayer を作成したら、addLayer() を呼び出して、インポートしたデータをマップに追加します。

layer.addLayer();

GeoJsonLayer を削除する

次のレイヤーを追加したと仮定します。

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

GeoJsonLayer を消去するには、clearLayer() を呼び出します。

layer.clearLayer();

GeoJsonFeature を追加および削除する

GeoJSON の地物のタイプは「feature」です。これには、形状、プロパティ メンバーと、任意で境界ボックスまたは ID が含まれています。

GeoJsonFeature オブジェクトを個別に作成して、GeoJsonLayer に追加できます。

地物を作成し、それに位置 0, 0 の点が 1 つ含まれ、プロパティにはエントリが 1 つあり、境界ボックスはないものと仮定します。

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

この地物をレイヤーに追加するには、addFeature() を呼び出し、追加する地物を渡します。

layer.addFeature(pointFeature);

レイヤーに追加した後で地物を削除するには、removeFeature() を呼び出して、削除する地物を渡します。

layer.removeFeature(pointFeature);

GeoJsonFeatures とそのプロパティにアクセスする

レイヤーに追加されたすべての GeoJsonFeature にアクセスするには、作成した GeoJsonLayer getFeatures() を呼び出します。これにより、以下に示すように for-each ループでアクセスできる GeoJsonFeatures の iterable が返されます。

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

hasProperty() および getProperty() の各メソッドを getFeatures() メソッドと併用して、保存されている各地物に特定のプロパティがあるかどうかをチェックし、ある場合はそのプロパティにアクセスします。

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

GeoJsonLayer と GeoJsonFeatures のスタイルを設定する

GeoJsonLayer のデフォルト スタイルを設定するか、レイヤー内の地物に個別にスタイルを設定できます。

デフォルト スタイル

GeoJsonLayer では、レイヤーに追加されるすべての点、線分、ポリゴンのデフォルト スタイルを設定できます。デフォルト スタイルは、地物のいずれの形状にもスタイルが設定されていない場合にのみ、適用されます。デフォルト スタイルに加えた変更は、デフォルト スタイルを使用しているすべての地物にも反映されます。

デフォルト スタイルを適用するステップは次のとおりです。

  1. 関連するデフォルト スタイル オブジェクトを取得します。これは、GeoJsonPointStyleGeoJsonLineStringStyle、または GeoJsonPolygonStyle のいずれかです。
  2. スタイルに必要なオプションを適用します。

たとえば、次のコードサンプルは、デフォルトの点のスタイルを変更して、点をドラッグ可能にし、タイトルとスニペットを設定する方法を示しています。

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

GeoJsonFeature に固有のスタイル

レイヤー内の地物ごとにスタイルを設定することもできます。GeoJsonFeature でスタイルを適用するステップは次のとおりです。

  1. 関連するスタイル オブジェクトを作成します。これは、GeoJsonPointStyleGeoJsonLineStringStyle、または GeoJsonPolygonStyle のいずれかです。
  2. スタイルに必要なオプションを適用します。
  3. GeoJsonFeature で関連するメソッドにスタイル オブジェクトを渡します。これは、setPointStyle()setLineStringStyle()、または setPolygonStyle() のいずれかです。

次の例では、GeoJsonFeature の線分のスタイルをカスタマイズして、色が赤になるようにする方法を示しています。

// Create a new feature containing a linestring
ArrayList<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

デモアプリを見る

URL から GeoJSON ファイルをインポートし、それを使用してレイヤーを作成する例は、ユーティリティ ライブラリに付属のデモアプリにある GeoJsonDemoActivity をご覧ください。デモアプリを実行する方法については、セットアップ ガイドをご覧ください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。