地図にデータセットを追加してデータセットのスタイルを設定する

プラットフォームを選択: Android iOS JavaScript

このページでは、データセットを地図に追加し、スタイル設定を適用する方法について説明します。

スタイル設定されたポリゴンデータを示したスクリーンショット。

前提条件

先へ進む前に、マップ ID、地図スタイル、データセット ID を用意しましょう。

データセット ID を地図スタイルと関連付ける

データセットの対象物をスタイル設定するには、対象物にスタイル関数を データセット対象物レイヤです。データセット対象物レイヤは、 データセットを地図のスタイルに関連付ける

データセットを地図のスタイルに関連付けるには:

  1. Google Cloud コンソールで、[データセット] ページに移動します。
  2. 目的のデータセットの名前をクリックします。[データセットの詳細] ページが表示されます。
  3. [プレビュー] タブをクリックします。
  4. [関連付けられている地図のスタイル] セクションで、 地図スタイルを追加します。
    [地図スタイルを追加] ボタンのスクリーンショット。
  5. 関連付ける地図スタイル(複数可)のチェックボックスをオンにして、[保存] をクリックします。

データセットにスタイルを適用する

データセットにスタイルを適用するには:

  1. スタイル ファクトリ関数を作成して FeatureLayer.StyleFactory 行うことができます。この関数は、データセットのスタイル設定ロジックを定義します。

  2. 発信 FeatureLayer.setFeatureStyle() データセット内の各対象物にスタイル ファクトリ関数を適用します。

スタイル ファクトリ関数を作成する

スタイル ファクトリ関数は、データセット内のすべての対象物に適用されます。 対象物レイヤで関数を設定するときにレイヤに作成されます。この関数は FeatureStyle を返す ポリゴンのスタイルを指定するオブジェクトです。

スタイル ファクトリが null を返した場合、指定された対象物はレンダリングされません。詳細 詳しくは、レイヤからスタイル設定を削除するをご覧ください。

Maps SDK for Android では、 Feature スタイル ファクトリ関数に渡します。Feature インスタンスは、 スタイル ファクトリ内のメタデータへのアクセスを可能にする 使用します。

スタイル ファクトリ関数は、実行時に常に一貫した結果を返す必要があります。 適用されました。たとえば、特徴のセットをランダムに色付けする場合、 ランダム部分は、Feature style 関数で発生しない方がよいでしょう。 意図しない結果を招くことがあります。

この関数はレイヤ内のすべての対象物に対して実行されるため、最適化が重要です。レンダリング時間に影響を与えないようにするには、 FeatureLayer.setFeatureStyle(null): 対象物レイヤが不要になった場合。

FeatureLayer.getDatasetId() を呼び出してデータセットの ID を取得することもできます。

ストローク、塗りつぶし、ポイントの半径を設定する

スタイル ファクトリ関数で対象物をスタイル設定する場合、次の要素を設定できます。

  • 枠線のストロークの色と不透明度Color クラスです。デフォルト値は透明(Color.TRANSPARENT)です。

  • 枠線のストローク幅(画面のピクセル単位)。デフォルト値は 2 です。

  • 塗りつぶしの色と不透明度Color クラスです。デフォルト値は透明(Color.TRANSPARENT)です。

  • 対象物のポイントの半径(0 ~ 128 ピクセル)。

単純なスタイル規則を使用する

対象物をスタイル設定する最も簡単な方法は、FeatureLayer.StyleFactory を定義することです。 指定すると、指定したコードに関係なく、常に同じ FeatureStyle オブジェクトがビルドされます。 説明します。対象物のスタイル オプションをデータセット対象物レイヤに直接適用するか、 FeatureStyleFunction と組み合わせて使用します。

宣言型のスタイル規則を使用する

スタイルルールは、対象物の属性に基づいて宣言的に設定できます。 データセット全体に適用できますnullは、以下から返品できます: 対象物スタイル関数。たとえば、対象物のサブセットを 表示されません。

たとえば、DatasetFeature.getDatasetAttributes() メソッドを使用して 対象物のデータセット属性の Map<String,String>。その後、 その属性に基づいて対象物のスタイルをカスタマイズする。

この例では、「highlightColor」の値を決定しています。属性の を使用して、スタイル設定をコントロールします。

Kotlin

// Get the dataset feature, so we can work with all of its attributes.
val datasetFeature: DatasetFeature = feature as DatasetFeature
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. val attributeColor: MutableMap<String, String> = datasetFeature.getDatasetAttributes() when (attributeColor["highlightColor"]) { "Black" -> { ... } "Red" -> { ... } else -> { ... } }

Java

// Get the dataset feature, so we can work with all of its attributes.
DatasetFeature datasetFeature = (DatasetFeature) feature;
// Create a switch statement based on the value of the // "highlightColor" attribute of the dataset. Map<String, String> attributeColor = datasetFeature.getDatasetAttributes(); switch(attributeColor.get("highlightColor")) { case "Black": ... break; case "Red": ... break; default: // Color not defined. ... break; }

データセット対象物レイヤにスタイルを適用する

この例では、データセット内のポリゴンにスタイル ファクトリ関数を適用します 対象物レイヤです。スタイル ファクトリ関数でカスタムの塗りつぶしとストローク スタイルを適用する をポリゴンに追加します。

  1. まだ実施していない場合は、 使ってみる 新しいマップ ID と地図のスタイルを作成します。必ず [Datasets](データセット)を有効にします。 対象物レイヤです。

  2. 地図の初期化時にデータセット 対象物レイヤへの参照を取得します。

    Kotlin

    private var datasetLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the DATASET feature layer. datasetLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build())
    // Apply style factory function to DATASET layer. styleDatasetsLayer() }

    Java

    private FeatureLayer datasetLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the DATASET feature layer. datasetLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.DATASET) // Specify the dataset ID. .datasetId(YOUR_DATASET_ID) .build());
    // Apply style factory function to DATASET layer. styleDatasetsLayer(); }

  3. スタイル ファクトリ関数を作成してデータセットに適用する 対象物レイヤです。

    次のサンプルでは、すべての対象物に同じ塗りつぶしとストロークを適用します 必要があります。

    Kotlin

    private fun styleDatasetsLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of DatasetFeature. if (feature is DatasetFeature) {
    return@StyleFactory FeatureStyle.Builder() // Define a style with green fill at 50% opacity and // solid green border. .fillColor(0x8000ff00.toInt()) .strokeColor(0xff00ff00.toInt()) .strokeWidth(2F) .build() } return@StyleFactory null }
    // Apply the style factory function to the feature layer. datasetLayer?.setFeatureStyle(styleFactory) }

    Java

    private void styleDatasetsLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of DatasetFeature. if (feature instanceof DatasetFeature) {
    return new FeatureStyle.Builder() // Define a style with green fill at 50% opacity and solid green border. .fillColor(0x8000ff00) .strokeColor(0xff00ff00) .strokeWidth(2F) .build(); } return null; };
    // Apply the style factory function to the feature layer. datasetLayer.setFeatureStyle(styleFactory); }

レイヤからスタイル設定を削除する

レイヤからスタイル設定を削除するには、FeatureLayer.setFeatureStyle(null) を呼び出します。

スタイル ファクトリから null を返すこともできます。次に例を示します。 一部の特徴を不可視のままにできます