Xử lý sự kiện
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Ví dụ này cho thấy cách nghe và xử lý một số sự kiện trên bản đồ.
Để biết thêm thông tin, hãy xem tài liệu.
Bắt đầu
Trước khi có thể thử mã mẫu, bạn phải định cấu hình môi trường phát triển.
Để biết thêm thông tin, hãy xem Mã mẫu SDK Bản đồ dành cho Android.
Xem mã
Kotlin
class EventsDemoActivity : SamplesBaseActivity(), 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)
applyInsets(findViewById<View?>(R.id.map_container))
}
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 SamplesBaseActivity
implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,
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.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());
}
}
Sao chép và chạy các mẫu
Bạn cần có Git để chạy mẫu này trên máy. Lệnh sau đây sẽ sao chép kho lưu trữ ứng dụng mẫu.
git clone git@github.com:googlemaps-samples/android-samples.git
Nhập dự án mẫu vào Android Studio:
- Trong Android Studio, hãy chọn File > New > Import Project (Tệp > Mới > Nhập dự án).
Chuyển đến vị trí bạn đã lưu kho lưu trữ và chọn thư mục dự án cho Kotlin hoặc Java:
- Kotlin:
PATH-REPO/android-samples/ApiDemos/kotlin
- Java:
PATH-REPO/android-samples/ApiDemos/java
- Chọn Mở. Android Studio sẽ tạo dự án của bạn bằng công cụ bản dựng Gradle.
- Tạo một tệp
secrets.properties
trống trong cùng thư mục với tệp local.properties
của dự án. Để biết thêm thông tin về tệp này, hãy xem phần Thêm khoá API vào dự án.
- Lấy khoá API từ dự án của bạn bằng cách bật SDK Bản đồ dành cho Android.
Thêm chuỗi sau vào secrets.properties
, thay thế YOUR_API_KEY bằng giá trị của khoá API:
MAPS_API_KEY=YOUR_API_KEY
- Chạy ứng dụng.
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-08-31 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-31 UTC."],[[["\u003cp\u003eThis example demonstrates how to listen for and respond to map events like clicks, long presses, and camera movements in your Android application.\u003c/p\u003e\n"],["\u003cp\u003eCode samples are provided in both Kotlin and Java, illustrating the implementation of event handling for map interactions.\u003c/p\u003e\n"],["\u003cp\u003eTo run the sample code locally, you'll need to clone the repository, import the project into Android Studio, and configure your development environment with an API key.\u003c/p\u003e\n"],["\u003cp\u003eThe sample code showcases how to register event listeners for clicks, long presses, and camera idleness, allowing you to trigger actions based on user interactions with the map.\u003c/p\u003e\n"]]],[],null,["This example shows how to listen to and handle some events on the map.\n\nFor more information, see the [documentation.](/maps/documentation/android-sdk/events)\n\nGet started\n\nBefore you can try the sample code, you must configure your development environment.\nFor more information, see [Maps SDK for Android code samples](/maps/documentation/android-sdk/examples).\n\nView the code\n\n\nKotlin \n\n```kotlin\nclass EventsDemoActivity : SamplesBaseActivity(), OnMapClickListener,\n OnMapLongClickListener, OnCameraIdleListener, OnMapReadyCallback {\n\n private lateinit var tapTextView: TextView\n private lateinit var cameraTextView: TextView\n private lateinit var map: GoogleMap\n\n override fun onCreate(savedInstanceState: Bundle?) {\n super.onCreate(savedInstanceState)\n setContentView(R.layout.events_demo)\n tapTextView = findViewById(R.id.tap_text)\n cameraTextView = findViewById(R.id.camera_text)\n val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?\n mapFragment?.getMapAsync(this)\n applyInsets(findViewById\u003cView?\u003e(R.id.map_container))\n }\n\n override fun onMapReady(googleMap: GoogleMap) {\n // return early if the map was not initialised properly\n map = googleMap\n map.setOnMapClickListener(this)\n map.setOnMapLongClickListener(this)\n map.setOnCameraIdleListener(this)\n }\n\n override fun onMapClick(point: LatLng) {\n tapTextView.text = \"tapped, point=$point\"\n }\n\n override fun onMapLongClick(point: LatLng) {\n tapTextView.text = \"long pressed, point=$point\"\n }\n\n override fun onCameraIdle() {\n if (!::map.isInitialized) return\n cameraTextView.text = map.cameraPosition.toString()\n }\n}https://github.com/googlemaps-samples/android-samples/blob/73ac16ffca01a2ca6fedd1988c713138ec000082/ApiDemos/project/kotlin-app/src/main/java/com/example/kotlindemos/EventsDemoActivity.kt#L31-L68\n\n \n```\n\nJava \n\n```java\npublic class EventsDemoActivity extends SamplesBaseActivity\n implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,\n OnMapReadyCallback {\n\n private TextView tapTextView;\n private TextView cameraTextView;\n private GoogleMap map;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(com.example.common_ui.R.layout.events_demo);\n\n tapTextView = findViewById(com.example.common_ui.R.id.tap_text);\n cameraTextView = findViewById(com.example.common_ui.R.id.camera_text);\n\n SupportMapFragment mapFragment =\n (SupportMapFragment) getSupportFragmentManager().findFragmentById(com.example.common_ui.R.id.map);\n mapFragment.getMapAsync(this);\n applyInsets(findViewById(com.example.common_ui.R.id.map_container));\n }\n\n @Override\n public void onMapReady(GoogleMap map) {\n this.map = map;\n this.map.setOnMapClickListener(this);\n this.map.setOnMapLongClickListener(this);\n this.map.setOnCameraIdleListener(this);\n }\n\n @Override\n public void onMapClick(LatLng point) {\n tapTextView.setText(\"tapped, point=\" + point);\n }\n\n @Override\n public void onMapLongClick(LatLng point) {\n tapTextView.setText(\"long pressed, point=\" + point);\n }\n\n @Override\n public void onCameraIdle() {\n cameraTextView.setText(map.getCameraPosition().toString());\n }\n}https://github.com/googlemaps-samples/android-samples/blob/73ac16ffca01a2ca6fedd1988c713138ec000082/ApiDemos/project/java-app/src/main/java/com/example/mapdemo/EventsDemoActivity.java#L35-L79\n\n \n```\n\n\u003cbr /\u003e\n\nClone and run the samples\n\nGit is required to run this sample locally. The following command clones the sample\napplication repository. \n\n```\ngit clone git@github.com:googlemaps-samples/android-samples.git\n```\n\nImport the sample project into Android Studio:\n\n1. In Android Studio, select **File \\\u003e New \\\u003e Import Project**.\n2. Go to the location where you saved the repository and select the project directory for\n Kotlin or Java:\n\n - **Kotlin** : \u003cvar translate=\"no\"\u003ePATH-REPO\u003c/var\u003e`/android-samples/ApiDemos/kotlin`\n - **Java** : \u003cvar translate=\"no\"\u003ePATH-REPO\u003c/var\u003e`/android-samples/ApiDemos/java`\n3. Select **Open**. Android Studio builds your project, using the Gradle build tool.\n4. Create a blank `secrets.properties` file in the same directory as your project's `local.properties` file. For more information about this file, see [Add your API key to the project](/maps/documentation/android-sdk/config#step_3_add_your_api_key_to_the_project).\n5. [Get an API key](/maps/documentation/android-sdk/get-api-key) from your project with the [Maps SDK for Android enabled](/maps/documentation/android-sdk/cloud-setup#enabling-apis).\n6. Add the following string to `secrets.properties`, replacing **YOUR_API_KEY** with the value of\n your API key:\n\n ```scdoc\n MAPS_API_KEY=YOUR_API_KEY\n ```\n7. Run the app."]]