구글 지도 활용

k_hyun·2023년 4월 8일
0
post-thumbnail

지도 사용 설정

매니페스트 설정은 아래와 같다

인터넷 퍼미션 사용
<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 : 지도 화면 변경 이벤트

0개의 댓글