境界線ポリゴンのスタイルを設定する

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

対象物レイヤの境界線ポリゴンにストロークと塗りつぶしのスタイルを適用するには:

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

  2. 発信 FeatureLayer.setFeatureStyle() スタイル ファクトリ関数を対象物レイヤに適用します。

次のサンプル地図では、境界線ポリゴンを 地域区分レイヤに含められます

ハナハワイのポリゴンを示すスクリーンショット。

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

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

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

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

この関数はレイヤ内のすべての対象物に対して実行されるため、最適化が重要です。レンダリング時間に影響しないようにするには、次の点に気をつけます。

  • 必要な対象物レイヤのみを有効にします。

  • 対象物レイヤが不要になったときに FeatureLayer.setFeatureStyle(null) を呼び出す あります。

ポリゴンのストロークと塗りつぶしを設定する

スタイル ファクトリ関数で境界ポリゴンをスタイル設定する場合、以下を設定できます。

  • ポリゴンの枠線のストロークの色と不透明度(ARGB カラー形式)。 定義されている Color クラスです。デフォルト値は透明(0x00000000)です。

  • ポリゴンの枠線のストローク幅(画面のピクセル数)。デフォルト値 2 です。

  • ポリゴンの塗りつぶしの色と不透明度を ARGB カラー形式で によって定義され、 Color クラスです。デフォルト値は透明(0x00000000)です。

プレイス ID を検索して対象物をターゲットに設定する

多くのアプリケーションでは、対象物の位置に基づいて対象物にスタイルが適用されます。対象 たとえば、国 / 地域 / 地域ごとにスタイルを あります。対象物のロケーションは、 プレイス ID

プレイス ID は、Google プレイスのデータベースおよび Google で、特定の場所を一意に識別する ID マップ。プレイス ID を取得するには:

提供状況は地域によって異なります。詳しくは、 Google の境界線の範囲 をご覧ください。

地名は、 米国地名委員会 および 米国地名ファイル

PlaceFeature を使用してプレイス ID を取得する

PlaceFeature クラスは Feature クラスのサブクラスです。 これは、以下を含む場所の対象物(プレイス ID を持つ対象物)を表します。 ADMINISTRATIVE_AREA_LEVEL_1ADMINISTRATIVE_AREA_LEVEL_2 型の特徴、 COUNTRYLOCALITYPOSTAL_CODESCHOOL_DISTRICT

プレイス ID が利用可能な場合、 Maps SDK for Android が PlaceFeature のインスタンスをスタイル ファクトリに渡す 関数を使用して、特徴の位置を特定できます。

スタイル ファクトリの例

この例では、スタイル ファクトリ関数を Locality のポリゴンに適用しています 対象物レイヤです。スタイル ファクトリ関数で対象物のプレイス ID が特定される PlaceFeature インスタンスを使用します。プレイス ID が「Hana、Hawaii」の場合 この関数は、カスタムの塗りつぶしとストローク スタイルをポリゴンに適用します。

  1. まだ実施していない場合は、 使ってみる 新しいマップ ID と地図のスタイルを作成します。必ず [地域区分] レイヤを有効にしてください。

  2. 地図の初期化時に [地域区分] レイヤへの参照を取得します。

    Java

    private FeatureLayer localityLayer;
    @Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
    // Apply style factory function to LOCALITY layer. styleLocalityLayer(); }

    Kotlin

    private var localityLayer: FeatureLayer? = null
    override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
    // Apply style factory function to LOCALITY layer. styleLocalityLayer() }

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

    次の例では、関数が 対象物の ID はハワイの Hana です(「ChIJ0zQtYiWsVHkRk8lRoB1RNPo」)。 指定したプレイス ID がハナ(ハワイ)のものでない場合、スタイルは一致しません。 適用されました。

    Java

    private void styleLocalityLayer() {
    // Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
    // Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }

    Kotlin

    private fun styleLocalityLayer() {
    // Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
    // Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
    // Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
    // Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
    // Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }

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

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