Gestire gli eventi

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

Per ulteriori informazioni, consulta la documentazione.

Inizia

Prima di poter provare il codice di esempio, devi configurare il tuo ambiente di sviluppo. Per ulteriori informazioni, consulta gli esempi di codice di Maps SDK for Android.

Visualizza il codice

Kotlin

class EventsDemoActivity : SamplesBaseActivity(), OnMapClickListener,
    OnMapLongClickListener, OnCameraIdleListener, OnCameraMoveListener, 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)
        applyInsets(findViewById(R.id.map_container))
    }

    override fun onMapReady(googleMap: GoogleMap) {
        map = googleMap
        map.setOnMapClickListener(this)
        map.setOnMapLongClickListener(this)
        map.setOnCameraMoveListener(this)
        map.setOnCameraIdleListener(this)
        updateCameraPosition()
    }

    override fun onMapClick(point: LatLng) {
        val lat = String.format(Locale.US, "%.6f", point.latitude)
        val lng = String.format(Locale.US, "%.6f", point.longitude)
        tapTextView.text = getString(R.string.events_tapped_format, lat, lng)
    }

    override fun onMapLongClick(point: LatLng) {
        val lat = String.format(Locale.US, "%.6f", point.latitude)
        val lng = String.format(Locale.US, "%.6f", point.longitude)
        tapTextView.text = getString(R.string.events_long_pressed_format, lat, lng)
    }

    override fun onCameraMove() {
        updateCameraPosition()
    }

    override fun onCameraIdle() {
        updateCameraPosition()
    }

    private fun updateCameraPosition() {
        if (!::map.isInitialized) return
        val pos = map.cameraPosition
        val lat = String.format(Locale.US, "%.6f", pos.target.latitude)
        val lng = String.format(Locale.US, "%.6f", pos.target.longitude)
        val zoom = String.format(Locale.US, "%.1f", pos.zoom)
        val tilt = String.format(Locale.US, "%.1f", pos.tilt)
        val bearing = String.format(Locale.US, "%.1f", pos.bearing)
        cameraTextView.text = getString(R.string.events_camera_position_format, lat, lng, zoom, tilt, bearing)
    }
}

      

Java

public class EventsDemoActivity extends SamplesBaseActivity
        implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,
        GoogleMap.OnCameraMoveListener, OnMapReadyCallback {

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

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

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

        SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);
        mapFragment.getMapAsync(this);
        applyInsets(findViewById(com.example.common_ui.R.id.map_container));
    }

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

    @Override
    public void onMapClick(LatLng point) {
        String lat = String.format(Locale.US, "%.6f", point.latitude);
        String lng = String.format(Locale.US, "%.6f", point.longitude);
        tapTextView.setText(getString(com.example.common_ui.R.string.events_tapped_format, lat, lng));
    }

    @Override
    public void onMapLongClick(LatLng point) {
        String lat = String.format(Locale.US, "%.6f", point.latitude);
        String lng = String.format(Locale.US, "%.6f", point.longitude);
        tapTextView.setText(getString(com.example.common_ui.R.string.events_long_pressed_format, lat, lng));
    }

    @Override
    public void onCameraMove() {
        updateCameraPosition();
    }

    @Override
    public void onCameraIdle() {
        updateCameraPosition();
    }

    private void updateCameraPosition() {
        if (map == null) return;
        com.google.android.gms.maps.model.CameraPosition pos = map.getCameraPosition();
        String lat = String.format(Locale.US, "%.6f", pos.target.latitude);
        String lng = String.format(Locale.US, "%.6f", pos.target.longitude);
        String zoom = String.format(Locale.US, "%.1f", pos.zoom);
        String tilt = String.format(Locale.US, "%.1f", pos.tilt);
        String bearing = String.format(Locale.US, "%.1f", pos.bearing);
        cameraTextView.setText(getString(
            com.example.common_ui.R.string.events_camera_position_format,
            lat,
            lng,
            zoom,
            tilt,
            bearing
        ));
    }
}

      

Clona ed esegui i sample

Per eseguire questo esempio localmente è necessario Git. Il comando seguente clona il repository dell'applicazione di esempio.

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 compila il progetto utilizzando lo strumento di compilazione Gradle.
  4. Crea un file secrets.properties vuoto nella stessa directory del file local.properties del progetto. Per ulteriori informazioni su questo file, consulta Aggiungere la chiave API al progetto.
  5. Genera una chiave API dal tuo progetto con l'SDK Maps per Android abilitato.
  6. Aggiungi la seguente stringa a secrets.properties, sostituendo YOUR_API_KEY con il valore della tua chiave API:

    MAPS_API_KEY=YOUR_API_KEY
  7. Esegui l'app.