以上で完了です。

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

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

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

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

スタイル設定でマップの地物を非表示にする

マップの地物のスタイルを変更するだけでなく、完全に非表示にすることもできます。 この例では、マップ上で有名スポットや公共交通機関のアイコンを非表示にする方法を紹介します。

スタイル設定は、normal マップ タイプでのみ機能します。

JSON スタイル オブジェクトをマップに渡す

マップのスタイルを設定するには、GoogleMap.setMapStyle() を呼び出して、JSON 形式のスタイル宣言を含む MapStyleOptions オブジェクトを渡す必要があります。 次の例では、未加工リソースまたは文字列から JSON を読み込むことができます。

未加工リソース

次のコードサンプルでは、プロジェクトに style_json という名前の未加工リソースが含まれていると想定しています。

/**
 * A styled map using JSON styles from a raw resource.
 */
public class MapsActivityRaw extends AppCompatActivity
        implements OnMapReadyCallback {

    private static final String TAG = MapsActivityRaw.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps_raw);

        // Get the SupportMapFragment and register for the callback
        // when the map is ready for use.
        SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map when it's available.
     * The API invokes this callback when the map is ready for use.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {

        try {
            // Customise the styling of the base map using a JSON object defined
            // in a raw resource file.
            boolean success = googleMap.setMapStyle(
                    MapStyleOptions.loadRawResourceStyle(
                            this, R.raw.style_json));

            if (!success) {
                Log.e(TAG, "Style parsing failed.");
            }
        } catch (Resources.NotFoundException e) {
            Log.e(TAG, "Can't find style. Error: ", e);
        }
        // Position the map's camera near Sydney, Australia.
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151)));
    }
}

有名スポットを非表示にするため、次の JSON スタイル宣言を含む未加工リソースを /res/raw/style_json.json で定義します。

次のスタイル宣言は、有名スポットと公共交通機関のアイコンを非表示にします。

レイアウト(activity_maps.xml)は、次のようになります。

文字列リソース

次のコードサンプルでは、プロジェクトに style_json という名前の文字列リソースが含まれていると想定しています。

package com.example.styledmap;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MapStyleOptions;

/**
 * A styled map using JSON styles from a string resource.
 */
public class MapsActivityString extends AppCompatActivity
        implements OnMapReadyCallback {

    private static final String TAG = MapsActivityString.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps_string);

        // Get the SupportMapFragment and register for the callback
        // when the map is ready for use.
        SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager()
                        .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map when it's available.
     * The API invokes this callback when the map is ready for use.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {

        // Customise the styling of the base map using a JSON object defined
        // in a string resource file. First create a MapStyleOptions object
        // from the JSON styles string, then pass this to the setMapStyle
        // method of the GoogleMap object.
        boolean success = googleMap.setMapStyle(new MapStyleOptions(getResources()
                .getString(R.string.style_json)));

        if (!success) {
            Log.e(TAG, "Style parsing failed.");
        }
        // Position the map's camera near Sydney, Australia.
        googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(-34, 151)));
    }
}

有名スポットを非表示にするため、次の JSON スタイル宣言を含む文字列リソースを /res/values/style_strings.xml で定義します。 このファイルでは、バックスラッシュを使用して引用符をエスケープする必要があります。

次のスタイル宣言は、有名スポットと公共交通機関のアイコンを非表示にします。

レイアウト(activity_maps.xml)は、次のようになります。

JSON スタイル宣言

スタイル設定されたマップでは、色やその他のスタイル変更をマップに適用するために、次の 2 つのコンセプトを使用します。

  • セレクター で、マップ上でスタイル設定が可能な地理的コンポーネントを指定します。 このようなコンポーネントには、道路、公園、水域など、およびそれらのラベルが含まれます。 セレクターには、featureType および elementType プロパティで指定された地物および要素が含まれます。

  • スタイラーは、マップの要素に適用できる色と可視性のプロパティです。 表示色は、色相、色、および明度 / ガンマ値の組み合わせで定義されます。

JSON のスタイル設定オプションの詳細については、スタイル リファレンスを参照してください。

Google Maps APIs Styling Wizard

Google Maps APIs Styling Wizard を使用して、JSON スタイル設定オブジェクトを簡単に生成できます。 Google Maps Android API は、Google Maps JavaScript API と同じスタイル宣言をサポートしています。

各種コードサンプル

GitHub の ApiDemos レポジトリには、スタイル設定の使い方を示したサンプルが含まれています。

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

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