快速入门 - 添加地图

本指南是创建显示地图的 Android 应用的快速入门指南。Android Studio 是使用 Maps SDK for Android 构建应用的推荐开发环境。

第 1 步:下载 Android Studio

按照指南下载安装 Android Studio。

第 2 步:安装 Google Play 服务 SDK

Google Play 服务添加到 Android Studio。

第 3 步:创建 Google 地图项目

按以下步骤新建一个包含地图 Activity 的应用项目:

  1. 启动 Android Studio。
  2. 按如下方式创建新项目:
    • 如果您看到 Welcome to Android Studio 对话框,请选择对话框右侧“Quick Start”下的 Start a new Android Studio project
    • 否则,请点击 Android Studio 菜单栏中的 File,然后依次点击 NewNew Project
  3. Choose your project 对话框中,选择与您有意针对其进行开发的平台对应的标签页。大多数用户希望保留默认的 Phone and Tablet
  4. 选择 Google Maps Activity,然后点击 Next
  5. 输入您的应用名称、软件包名称和项目位置、编程语言(Java 或 Kotlin),以及您的应用支持的最低 Android API 级别,然后点击 Finish

Android Studio 会启动 Gradle 并构建您的项目。这可能需要几秒钟的时间。如需详细了解如何在 Android Studio 中创建项目,请参阅 [Android Studio 文档][Studio 项目]。

构建完成后,Android Studio 会在编辑器中打开 google_maps_api.xmlMapsActivity.java 文件。(请注意,您的 Activity 可能具有不同的名称,但它应是您在设置期间配置的名称。)请注意,google_maps_api.xml 文件包含有关如何在尝试运行应用前获取 Google Maps API 密钥的说明。下一部分会更详细地介绍如何获取 API 密钥。

第 4 步:设置 Google Maps API 密钥

  1. 为您的项目启用结算功能。如需了解详情,请参阅创建结算帐号
  2. Cloud Console 中,为项目启用 Maps SDK for Android。如需了解详情,请参阅启用 API
  3. 请按照获取 API 密钥指南中的说明获取、添加和限制 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" />

地图 Activity Java 文件

默认情况下,定义地图 Activity 的 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))
    }
}
      

如果您的地图 Activity 文件不包含以上代码,请将文件软件包名称后的内容替换为以上代码。

第 6 步:连接 Android 设备

要了解应用的实际运行情况,最简单的方法是将 Android 设备与计算机相连。按照说明在您的 Android 设备上启用开发者选项,并配置您的应用和系统以检测设备。

此外,您也可以使用 Android 模拟器来运行您的应用。使用 Android 虚拟设备 (AVD) 管理器来配置一台或多台虚拟设备,您可以在构建和运行您的应用时通过 Android 模拟器来使用这些设备。选择模拟器时,请确保您使用的是 Android 4.1.1 或更高版本,并谨慎选择包含 Google API 的映像,否则此应用将缺少执行所需的运行时 API。另请注意有关配置虚拟机加速的说明,您应该按照说明中所述将其用于 x86 目标 AVD。这可以改善您的模拟器使用体验。

第 7 步:部署并运行应用

在 Android Studio 中,点击 Run 菜单选项(或 play 按钮图标)运行您的应用。

提示您选择设备时,选择下列选项之一:

  • 选择与您的计算机相连的 Android 设备。
  • 此外,还可以选择 Launch emulator 单选按钮,然后选择您之前配置过的虚拟设备。

点击 OK。Android Studio 会调用 Gradle 来构建您的应用,然后在设备或模拟器上显示结果。应用可能需要几分钟的时间才能打开。

后续步骤

您可能想观摩一些示例代码

您可以在开发者指南中阅读更多有关地图对象的内容。