Все готово!

Прежде чем приступить к разработке, ознакомьтесь с документацией для разработчиков.

Активация Google Maps Android API

Чтобы помочь вам освоиться, мы покажем, как выполнить некоторые необходимые действия в консоли разработчика Google:

  1. Создание или выбор проекта
  2. Активация Google Maps Android API
  3. Создание соответствующих ключей

Добавление карты со стилем

В этом обучающем руководстве показано, как добавить карту с пользовательским стилем в приложение для Android. В качестве примера пользовательского стиля в руководстве используется ночной режим.

Параметры стилей позволяют настраивать представление стандартных стилей карт Google, изменять отображение дорог, парков, организаций и других объектов. Это означает, что вы можете акцентировать внимание пользователей на определенных компонентах карты или создать карту, дополняющую стиль вашего приложения.

Стилизация работает только на карте типа normal.

Получение кода

Клонируйте или загрузите репозиторий Google Maps Android API v2 Samples с сайта GitHub.

Настройка проекта разработки

Выполните эти шаги, чтобы создать обучающий проект в Android Studio.

  1. Загрузите и установите Android Studio.
  2. Добавьте пакет служб Google Play в Android Studio.
  3. Клонируйте или загрузите репозиторий Google Maps Android API v2 Samples, если вы не сделали этого после начала работы с этим руководством.
  4. Импортируйте обучающий проект:

    • В Android Studio выберите File > New > Import Project.
    • Перейдите в каталог, где вы сохранили репозиторий Google Maps Android API v2 Samples после его загрузки.
    • Найдите проект StyledMap, используя этот путь:
      PATH-TO-SAVED-REPO/android-samples/tutorials/StyledMap
    • Выберите каталог проекта и нажмите OK. Теперь Android Studio создаст ваш проект с использованием инструмента сборки Gradle.

Получение ключа API и активация необходимых API

Для выполнения этого учебного проекта вам понадобится ключ Google API, который авторизован для работы с Google Maps Android API.

Нажмите кнопку ниже, чтобы получить ключ и активировать API.

Получить ключ

Более подробную информацию см. в полном руководстве по получению ключа API.

Добавление ключа API в приложение

  1. Отредактируйте файл gradle.properties своего проекта.
  2. Подставьте ключ API в качестве значения для свойства GOOGLE_MAPS_API_KEY. Во время сборки приложения Gradle копирует ключ API в манифест приложения Android.

    GOOGLE_MAPS_API_KEY=PASTE-YOUR-API-KEY-HERE
    

Сборка и запуск приложения

  1. Подключите устройство Android к компьютеру. Выполните инструкции по активации возможностей для разработчиков на устройстве Android и настройте вашу систему для обнаружения этого устройства. (Для настройки виртуального устройства вы также можете использовать Android Virtual Device (AVD) Manager. Выбирая эмулятор, убедитесь, что вы используете образ, который включает в себя интерфейсы Google API. Более подробную информацию см. в руководстве по началу работы).
  2. В Android Studio выберите пункт меню Run (или нажмите значок кнопки воспроизведения). В открывшемся окне выберите устройство.

Android Studio задействует инструмент Gradle для сборки приложения, а затем запустит его на устройстве или на симуляторе. Карта должна отобразиться с темным стилем (ночной режим), как показано на иллюстрации на этой странице.

Устранение неполадок

  • Если карта не отображается, проверьте, получен ли ключ API и добавлен ли он в приложение как описано выше. Проверьте журнал Android Monitor в Android Studio на наличие сообщений об ошибках, касающихся ключа API.
  • Используйте средства отладки Android Studio, чтобы просмотреть журналы и выполнить отладку приложения.

Понимание кода

В этой части руководства представлено объяснение наиболее важных компонентов приложения StyledMap, помогающее понять принципы создания подобного приложения.

Добавление ресурса, содержащего объект стиля JSON

Добавьте в свой проект разработки ресурс, содержащий декларации стилей в формате JSON. Вы можете использовать исходный ресурс или строку, как показано в примерах ниже.

Примечание. В примере приложения, загруженном с GitHub, используется исходный ресурс.

Исходный ресурс

Определите в /res/raw/style_json.json исходный ресурс, содержащий декларацию стиля JSON для ночного режима:

Строковый ресурс

Определите в /res/values/style_strings.xml строковый ресурс, содержащий декларацию стиля JSON для ночного режима. В этом обучающем руководстве используется имя строки style_json. В этом файле нужно использовать обратную косую черту для комбинирования с кавычками:

Передача объекта стиля JSON на карту

Чтобы применить стиль к карте, вызовите GoogleMap.setMapStyle(), передав объект MapStyleOptions, который содержит определения стиля в формате JSON.

Исходный ресурс

В следующем примере кода предполагается, что ваш проект содержит исходный ресурс под названиемstyle_json:

package com.example.styledmap;

import android.content.res.Resources;
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 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)));
    }
}

Макет (activity_maps_raw.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)));
    }
}

Макет (activity_maps_string.xml) выглядит так:

Подробнее о декларациях стиля JSON

Стилизованные карты используют две концепции применения цветов и иных стилистических изменений к карте.

  • Селекторы определяют географические элементы, которые можно стилизовать на карте. В их число входят дороги, парки, водоемы и многие другие объекты, а также их метки. Селекторы включают признаки и элементы, указываемые как свойства featureType и elementType.
  • Параметры стиля – это свойства цвета и видимости, которые можно применить к элементам карты. Они определяют отображаемый цвет как комбинацию значений тона, цвета и яркости/гаммы.

Подробное описание параметров стилизации JSON см. в документе Работа со стилем.

Google Maps APIs Styling Wizard

Используйте Google Maps APIs Styling Wizard в качестве быстрого способа создания объекта стиля JSON. Google Maps Android API поддерживает те же объявления стиля, что и Google Maps JavaScript API.

Следующий шаг

Узнайте, как скрыть элементы карты с помощью стилей.

Оставить отзыв о...

Текущей странице
Google Maps Android API
Google Maps Android API
Нужна помощь? Обратитесь в службу поддержки.