매니페스트 설정은 아래와 같다
인터넷 퍼미션 사용
<uses-permission android:name="android.permission.INTERNET"/>
구글 지도 사용 선언
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
<application>
http 통신을 허용하는 설정
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
구글 맵스 API 키를 등록
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="## API KEY ##"/>
play-services 라이브러리 버전 설정
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</application>
activity_main.xml
지도 프래그먼트 등록
<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
MainActivity.kt
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
lateinit var binding: ActivityMainBinding
var googleMap: GoogleMap? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
(supportFragmentManager.findFragmentById(R.id.mapView) as SupportMapFragment?)!!.getMapAsync(this)
// 지도의 중심 이동
val latLng = LatLng(37.566610, 126.978403)
val position = CameraPosition.Builder()
.target(latLng)
.zoom(16f)
.build()
googleMap?.moveCamera(CameraUpdateFactory.newCameraPosition(position))
// 마커 표시하기
val markerOptions = MarkerOptions()
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher_foreground))
markerOptions.position(latLng)
markerOptions.title("서울 시청")
markerOptions.snippet("Tel:01-120")
googleMap?.addMarker(markerOptions)
}
override fun onMapReady(p0: GoogleMap?) {
googleMap = p0
}
}
GoogleMap.OnMapClickListener : 지도 클릭 이벤트
GoogleMap.OnMapLongClickListener : 지도 롱 클릭 이벤트
GoogleMap.OnMarkerClickListener : 마커 클릭 이벤트
GoogleMap.onMarkerDragListener : 마커 드래그 이벤트
GoogleMap.OnInfoWindowClickListener : 정보 창 클릭 이벤트
GoogleMap.onCameraIdleListener : 지도 화면 변경 이벤트