Processar eventos

Esse exemplo mostra como ouvir e processar alguns eventos no mapa.

Para mais detalhes, consulte a documentação.

Vamos começar

Antes de testar um exemplo de código, é preciso configurar o ambiente de desenvolvimento. Confira mais detalhes em Exemplos de código do SDK do Maps para Android.

Ver o 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());
   
}
}

     

Clonar e executar as amostras

O Git é necessário para executar esta amostra localmente. O comando a seguir clona o repositório do aplicativo de exemplo.

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

Importe o projeto de amostra no Android Studio:

  1. No Android Studio, selecione File > New > Import Project.
  2. Acesse o local onde você salvou o repositório e selecione o diretório do projeto para Kotlin ou Java:

    • Kotlin: PATH-REPO/android-samples/ApiDemos/kotlin
    • Java: PATH-REPO/android-samples/ApiDemos/java
  3. Clique em Open. O Android Studio cria seu projeto usando a ferramenta Gradle.
  4. Crie um arquivo secrets.properties em branco no mesmo diretório do arquivo local.properties do seu projeto. Confira mais informações em Adicionar sua chave de API ao projeto.
  5. Adicione a seguinte string a secrets.properties, substituindo YOUR_API_KEY pelo valor da sua chave de API:

    MAPS_API_KEY=YOUR_API_KEY
  6. Execute o app.