Cómo controlar eventos

En este ejemplo, te indicamos cómo escuchar y administrar algunos eventos en el mapa.

Para obtener más información, consulta la documentación.

Comenzar

Antes de probar el código de muestra, debes configurar tu entorno de desarrollo. Para obtener más información, consulta Muestras de código del SDK de Maps SDK para Android.

Consulta el código



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()
   
}
}

     

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 y ejecuta las muestras

Se requiere Git para ejecutar esta muestra a nivel local. Con el siguiente comando, se clona el repositorio de la aplicación de ejemplo.

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

Importa el proyecto de muestra en Android Studio:

  1. En Android Studio, selecciona File > New > Import Project.
  2. Ve a la ubicación en la que guardaste el repositorio y selecciona el directorio del proyecto para Kotlin o Java:

    • Kotlin: PATH-REPO/android-samples/ApiDemos/kotlin
    • Java: PATH-REPO/android-samples/ApiDemos/java
  3. Selecciona Open. Android Studio creará tu proyecto con la herramienta de compilación Gradle.
  4. Crea un archivo secrets.properties en blanco en el mismo directorio en el que se encuentra el archivo local.properties de tu proyecto. Para obtener más información, consulta Agrega tu clave de API al proyecto.
  5. Agrega la siguiente cadena a secrets.properties reemplazando YOUR_API_KEY con el valor de tu clave de API:

    MAPS_API_KEY=YOUR_API_KEY
  6. Ejecuta la app.