Gestire gli eventi

Questo esempio mostra come ascoltare e gestire alcuni eventi sulla mappa.

Per ulteriori informazioni, consulta la documentazione.

Inizia

Prima di provare il codice campione, devi configurare il tuo ambiente di sviluppo. Per ulteriori informazioni, consulta la sezione Esempi di codice di Maps SDK for Android.

Visualizza il codice

Kotlin



class EventsDemoActivity : AppCompatActivity(), OnMapClickListener,
    OnMapLongClickListener, OnCameraIdleListener, OnMapReadyCallback {

    private lateinit var tapTextView: TextView
    private lateinit var cameraTextView: TextView
    private lateinit var map: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.events_demo)
        tapTextView = findViewById(R.id.tap_text)
        cameraTextView = findViewById(R.id.camera_text)
        val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
        mapFragment?.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
        // return early if the map was not initialised properly
        map = googleMap
        map.setOnMapClickListener(this)
        map.setOnMapLongClickListener(this)
        map.setOnCameraIdleListener(this)
    }

    override fun onMapClick(point: LatLng) {
        tapTextView.text = "tapped, point=$point"
    }

    override fun onMapLongClick(point: LatLng) {
        tapTextView.text = "long pressed, point=$point"
    }

    override fun onCameraIdle() {
        if (!::map.isInitialized) return
        cameraTextView.text = map.cameraPosition.toString()
    }
}

      

Java


public class EventsDemoActivity extends AppCompatActivity
        implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,
        OnMapReadyCallback {

    private TextView tapTextView;
    private TextView cameraTextView;
    private GoogleMap map;

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

        tapTextView = findViewById(R.id.tap_text);
        cameraTextView = findViewById(R.id.camera_text);

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

    @Override
    public void onMapReady(GoogleMap map) {
        this.map = map;
        this.map.setOnMapClickListener(this);
        this.map.setOnMapLongClickListener(this);
        this.map.setOnCameraIdleListener(this);
    }

    @Override
    public void onMapClick(LatLng point) {
        tapTextView.setText("tapped, point=" + point);
    }

    @Override
    public void onMapLongClick(LatLng point) {
        tapTextView.setText("long pressed, point=" + point);
    }

    @Override
    public void onCameraIdle() {
        cameraTextView.setText(map.getCameraPosition().toString());
    }
}

      

clona ed esegui gli esempi

Per eseguire questo esempio in locale è necessario Git. Il seguente comando clona l'esempio un repository di applicazioni.

git clone git@github.com:googlemaps-samples/android-samples.git

Importa il progetto di esempio in Android Studio:

  1. In Android Studio, seleziona File > Nuovo > Importa progetto.
  2. Vai alla posizione in cui hai salvato il repository e seleziona la directory del progetto per Kotlin o Java:

    • Kotlin: PATH-REPO/android-samples/ApiDemos/kotlin
    • Java: PATH-REPO/android-samples/ApiDemos/java
  3. Seleziona Apri. Android Studio crea il tuo progetto utilizzando la build Gradle lo strumento a riga di comando gcloud.
  4. Crea un file secrets.properties vuoto nella stessa directory del file local.properties del progetto. Per ulteriori informazioni, consulta Aggiungere la chiave API al progetto.
  5. Aggiungi la seguente stringa a secrets.properties, sostituendo YOUR_API_KEY con il valore di la chiave API:

    MAPS_API_KEY=YOUR_API_KEY
  6. Esegui l'app.