Краткое руководство: как добавить карту

В этом кратком руководстве рассказывается, как создать приложение для Android с интеграцией карт. Рекомендованной средой разработки приложений с Maps SDK для Android является Android Studio.

Шаг 1. Скачайте Android Studio

Следуйте инструкциям по скачиванию и установке Android Studio.

Шаг 2. Установите SDK сервисов Google Play

Добавьте сервисы Google Play в Android Studio.

Шаг 3. Создайте проект Google Карт

Чтобы создать новый проект приложения, поддерживающего работу с картой, выполните следующие действия:

  1. Запустите Android Studio.
  2. Создайте новый проект согласно следующим инструкциям:
    • Если появится диалоговое окно Welcome to Android Studio (Добро пожаловать в Android Studio), выберите Start a new Android Studio project (Создать новый проект Android Studio) в разделе Quick Start (Быстрая настройка) в правой части окна.
    • В противном случае выберите File (Файл) в строке меню Android Studio, а затем – New (Создать) и New Project (Новый проект).
  3. В диалоговом окне Choose your project (Выбор проекта) перейдите на вкладку с названием платформы, для которой вы разрабатываете приложение. В большинстве случаев имеет смысл оставить значение по умолчанию – Phone and Tablet (Телефоны и планшеты).
  4. Выберите вариант Google Maps Activity (Операция с Google Картами) и нажмите Next (Далее).
  5. Укажите название своего приложения, название пакета, местоположение проекта, язык программирования (Java или Kotlin) и минимальный уровень Android API, поддерживаемый вашим приложением. Затем нажмите Finish (Готово).

Android Studio запустит Gradle и создаст ваш проект. Это может занять несколько секунд. Подробнее о создании проекта в Android Studio рассказывается в [документации Android Studio][studio-projects].

Когда сборка будет завершена, в Android Studio откроются файлы google_maps_api.xml и MapsActivity.java в окне редактора. Файл MapsActivity может иметь другое название, если вы указали его при настройке. Файл google_maps_api.xml содержит инструкции о том, как получить ключ Google Maps API (это нужно сделать до запуска приложения). В следующем разделе руководства подробнее рассказывается о том, как получить этот ключ.

Шаг 4. Настройте ключ Google Maps API

  1. Настройте оплату для своего проекта. Подробнее о том, как создать платежный аккаунт
  2. В Cloud Console включите Maps SDK для Android для своего проекта. Подробнее о том, как включить API
  3. В этом руководстве рассказывается, как получить ключ API, добавить его и задать для него ограничения.

Шаг 5. Проанализируйте код

Изучите код, содержащийся в шаблоне. В частности, просмотрите указанные ниже файлы в проекте Android Studio.

XML-файл макета

По умолчанию файл XML, определяющий макет приложения, имеет название и путь res/layout/activity_maps.xml. В этом файле содержится следующий код:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/map"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

Файл Java с реализацией карты

По умолчанию файл Java, определяющий реализацию карты, имеет название MapsActivity.java. Он должен содержать приведенный ниже код (после указанного вами названия пакета).

Java

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

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.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     *
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

      

Kotlin

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example.kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

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.MarkerOptions
import com.google.maps.example.R

internal class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap

        // Add a marker in Sydney and move the camera
        val sydney = LatLng(-34.0, 151.0)
        mMap.addMarker(MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}
      

Если файл с реализацией карты не содержит приведенный выше код, замените содержимое файла этим кодом, разместив его после названия пакета.

Шаг 6. Подключите устройство Android

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

Другой способ заключается в том, чтобы запустить приложение с помощью эмулятора Android. Настройте одно или несколько виртуальных устройств Android с помощью Менеджера AVD. Это позволит вам пользоваться эмулятором Android при сборке и запуске своего приложения. Выбирая эмулятор, убедитесь, что в нем используется версия Android 4.1.1 или выше. Кроме того, выберите образ, содержащий API Google: иначе у приложения не будет необходимых компонентов API среды выполнения. Внимательно ознакомьтесь с инструкциями по настройке ускорения для виртуальных машин и следуйте им при конфигурировании виртуального устройства Android, эмулируемого в системе с архитектурой x86. Это позволит сделать работу с эмулятором более удобной.

Шаг 7. Настройте и запустите свое приложение

Чтобы запустить приложение, в Android Studio выберите пункт меню Run (Запустить) или нажмите кнопку со значком воспроизведения.

Когда откроется окно с предложением выбрать устройство, выполните одно из следующих действий:

  • Выберите устройство Android, подключенное к вашему компьютеру.
  • Выберите пункт Launch emulator (Запустить эмулятор) и укажите виртуальное устройство, которое вы настроили ранее.

Нажмите ОК. Android Studio запустит Gradle для сборки приложения, а затем отобразит результаты на устройстве или в эмуляторе. Для запуска приложения может потребоваться несколько минут.

Дальнейшие действия

Рекомендуем посмотреть примеры кода.

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