이벤트 처리하기
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
이 예시에서는 지도의 일부 이벤트를 수신 대기하고 처리하는 방법을 보여줍니다.
자세한 내용은 문서를 참고하세요.
시작하기
샘플 코드를 사용하기 전에 개발 환경을 구성해야 합니다.
자세한 내용은 Android용 Maps SDK 코드 샘플을 참고하세요.
코드 보기
Kotlin
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()
}
}
Java
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 스튜디오로 가져옵니다.
- Android 스튜디오에서 File > New > Import Project를 선택합니다.
저장소를 저장한 위치로 이동하여 Kotlin 또는 Java를 위한 프로젝트 디렉터리를 선택합니다.
- Kotlin:
PATH-REPO/android-samples/ApiDemos/kotlin
- Java:
PATH-REPO/android-samples/ApiDemos/java
- 열기를 선택합니다. Android 스튜디오에서 Gradle 빌드 도구를 사용하여 프로젝트를 빌드합니다.
- 프로젝트의
local.properties
파일과 동일한 디렉터리에서 빈 secrets.properties
파일을 만듭니다. 자세한 내용은 프로젝트에 직접 생성한 API 키 추가하기를 참고하세요.
다음 문자열을 secrets.properties
에 추가합니다(YOUR_API_KEY는 API 키의 값으로 변경).
MAPS_API_KEY=YOUR_API_KEY
- 앱을 실행합니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-08-13(UTC)
[null,null,["최종 업데이트: 2024-08-13(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."]]