Как обрабатывать события

В этом примере показано, как прослушивать и обрабатывать некоторые события на карте.

Подробнее читайте в документации.

Начало работы

Прежде чем воспользоваться образцом кода, настройте среду разработки. Подробнее об образцах кода Maps SDK для Android

Ознакомьтесь с кодом

KotlinJava


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

     

Клонирование и запуск образцов приложений

Для локального запуска образца вам потребуется Git. Используйте команду ниже, чтобы клонировать образец приложения в хранилище.

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

Импортируйте образец проекта в Android Studio:

  1. В Android Studio откройте меню Файл > Создать > Импортировать проект.
  2. Перейдите в директорию, куда вы добавили хранилище, и выберите каталог проекта для Kotlin или Java.

    • Kotlin: PATH-REPO/android-samples/ApiDemos/kotlin
    • Java: PATH-REPO/android-samples/ApiDemos/java
  3. Нажмите кнопку Открыть. Android Studio создаст проект с помощью Gradle.
  4. Создайте пустой файл secrets.properties в том же каталоге, где хранится файл проекта local.properties. Подробнее о том, как добавить в проект ключ API
  5. Добавьте в secrets.properties следующую строку, заменив YOUR_API_KEY на значение вашего ключа API:

    MAPS_API_KEY=YOUR_API_KEY
  6. Запустите приложение.