Aggiungere una mappa

Seleziona la piattaforma: Android iOS JavaScript

Questo argomento descrive come aggiungere una mappa di base a un'app per Android dopo aver configurato il progetto per l'utilizzo di Maps SDK for Android. Dopo il giorno aggiungendo una mappa, puoi modificarne il tipo di mappa e gli elementi.

Panoramica

Maps SDK for Android fornisce diversi corsi che la tua app può utilizzare per gestire il ciclo di vita, la funzionalità e i dati di una mappa. Utente di assistenza dei corsi interazioni basate sul modello UI Android, come l'impostazione dello stato iniziale la mappa e rispondere ai gesti inseriti dall'utente durante l'esecuzione.

L'interfaccia principale e le classi per la gestione delle mappe:

  • GoogleMap: il punto di accesso per la gestione della mappa sottostante. caratteristiche e dati. La tua app può accedere a un oggetto GoogleMap solo dopo che è recuperate da un oggetto SupportMapFragment o MapView.

  • SupportMapFragment: un frammento per gestire il ciclo di vita di un oggetto GoogleMap.

  • MapView: una visualizzazione per la gestione del ciclo di vita di un GoogleMap.

  • OnMapReadyCallback: un'interfaccia di callback che gestisce gli eventi e l'interazione dell'utente per l'oggetto GoogleMap.

Un oggetto GoogleMap esegue automaticamente queste operazioni:

  • Connessione al servizio Google Maps in corso.
  • Download dei riquadri della mappa in corso...
  • Visualizzazione dei riquadri sullo schermo del dispositivo.
  • Visualizzazione di vari controlli, ad esempio panoramica e zoom.
  • Risposta ai gesti di panoramica e zoom spostando la mappa e aumentando o diminuendo lo zoom.

Per utilizzare un oggetto GoogleMap nella tua app, devi usare un SupportMapFragment o MapView come oggetto container per la mappa e quindi recupera l'oggetto GoogleMap dal container. Poiché il container da un frammento o una vista Android, forniscono la mappa con la gestione del ciclo di vita e le funzionalità UI delle classi Android base. La classe SupportMapFragment è il container più moderno e comune per un Oggetto GoogleMap.

Visualizza il codice

Il seguente codice proviene dall'attività Java completa utilizzata in questo argomento durante l'aggiunta un frammento in modo statico. Il progetto Android è stato creato dal progetto vuoto e poi aggiornato in base alla guida alla configurazione del progetto. Dopo aver eseguito i passaggi descritti in questo argomento, il codice potrebbe variare in base modello di progetto.

  package com.example.mapsetup;

  import androidx.appcompat.app.AppCompatActivity;

  import android.os.Bundle;

  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;

  // Implement OnMapReadyCallback.
  public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          // Set the layout file as the content view.
          setContentView(R.layout.activity_main);

          // Get a handle to the fragment and register the callback.
          SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);

      }

      // Get a handle to the GoogleMap object and display marker.
      @Override
      public void onMapReady(GoogleMap googleMap) {
          googleMap.addMarker(new MarkerOptions()
                  .position(new LatLng(0, 0))
                  .title("Marker"));
      }
  }

Per aggiungere una mappa

Questa sezione descrive come aggiungere una mappa di base utilizzando un frammento come mappa container; ma puoi usare una vista. Per un esempio, vedi RawMapViewDemoActivity su GitHub.

Passaggi di base:

  1. Per ottenere l'SDK, ottieni una chiave API e aggiungi i framework richiesti, segui i passaggi in:

    1. Configurazione nella console Google Cloud

    2. Utilizzare una chiave API

    3. Configurare un progetto Android Studio

  2. Aggiungi un oggetto SupportMapFragment all'attività che gestirà la mappa. Puoi aggiungere il frammento in modo statico o dinamico.

  3. Implementa l'interfaccia OnMapReadyCallback.

  4. Imposta il file di layout come visualizzazione dei contenuti.

  5. Se hai aggiunto il frammento in modo statico, ottieni un handle.

  6. Registra il callback.

  7. Recupera un handle per l'oggetto GoogleMap.

Aggiungi un oggetto SupportMapFragment

Puoi aggiungere un oggetto SupportMapFragment alla tua app in modo statico o dinamico. Il modo più semplice consiste nel aggiungerlo in modo statico. Se aggiungi il frammento in modo dinamico, puoi eseguire azioni aggiuntive sul frammento, come rimuovere e per poi sostituirlo in fase di runtime.

Aggiungere un frammento in modo statico

Nel file di layout dell'attività che gestirà la mappa:

  1. Aggiungi un elemento fragment.
  2. Aggiungi la dichiarazione del nome xmlns:map="http://schemas.android.com/apk/res-auto". Ciò consente l'utilizzo di maps attributi XML personalizzati.
  3. Nell'elemento fragment, imposta l'attributo android:name su com.google.android.gms.maps.SupportMapFragment.
  4. Nell'elemento fragment, aggiungi l'attributo android:id e impostalo su R.id.map ID risorsa (@+id/map).

Ad esempio, ecco un file di layout completo che include un elemento fragment:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

ad aggiungere un frammento in modo dinamico.

Nell'attività:

  1. Crea un'istanza SupportMapFragment.
  2. Esegui il commit di una transazione che aggiunge il frammento all'attività. Per ulteriori informazioni, vedi Transazioni a frammentazione.

Ad esempio:

Kotlin



val mapFragment = SupportMapFragment.newInstance()
supportFragmentManager
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit()

      

Java


SupportMapFragment mapFragment = SupportMapFragment.newInstance();
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit();

      

Implementa l'interfaccia OnMapReadyCallback

Aggiorna la dichiarazione delle attività come segue:

Kotlin



class MainActivity : AppCompatActivity(), OnMapReadyCallback {

    // ...
}

      

Java


class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    // ...
}

      

Impostare la visualizzazione dei contenuti

Nel metodo onCreate della tua attività, chiama il metodo setContentView e imposta il file di layout come visualizzazione dei contenuti.

Ad esempio, se il file di layout è denominato main.xml:

Kotlin



override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
}

      

Java


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

      

Ottieni un handle sul frammento e registra il callback

  1. Per ottenere un handle al frammento, chiama il metodo FragmentManager.findFragmentById e passalo l'ID risorsa del frammento nel file di layout. Se hai aggiunto il frammento in modo dinamico, salta questo passaggio perché hai già recuperato l'handle.

  2. Chiama il metodo getMapAsync per impostare il callback per .

Ad esempio, se hai aggiunto il frammento in modo statico:

Kotlin



val mapFragment = supportFragmentManager
    .findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)

      

Java


SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
    .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

      

Ottieni un handle per l'oggetto GoogleMap

Utilizza il metodo di callback onMapReady per ottenere un handle per GoogleMap. Il callback viene attivato quando la mappa è pronta per ricevere l'input dell'utente. Fornisce un'istanza non null della classe GoogleMap che per aggiornare la mappa.

In questo esempio, il callback onMapReady recupera un handle nel campo GoogleMap oggetto, dopodiché alla mappa viene aggiunto un indicatore:

Kotlin



override fun onMapReady(googleMap: GoogleMap) {
    googleMap.addMarker(
        MarkerOptions()
            .position(LatLng(0.0, 0.0))
            .title("Marker")
    )
}

      

Java


@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.addMarker(new MarkerOptions()
        .position(new LatLng(0, 0))
        .title("Marker"));
}

      

Screenshot con la mappa e l&#39;indicatore centrati su Null Island.

Dopo aver creato ed eseguito correttamente l'app, verrà visualizzata una mappa con un indicatore su Null Island (zero gradi di latitudine e zero gradi di longitudine).

Visualizza il codice per l'attività completa:

Visualizza Completa l'attività


Passaggi successivi

Dopo aver completato questi passaggi, puoi configurare le impostazioni della mappa.