[Kotlin] Fragment에 GoogleMap 설치
10800 단어 KotlinGoogleMapsAPI
완성도
Google Maps API 키 가져오기
프로젝트를 만들 때
Google Maps Activity
프로젝트를 만들기를 선택하십시오.이렇게 구글.maps_api.xml을 만들 수 있을 것 같습니다.google_maps_api.xml
<resources>
<!--
TODO: Before you run your application, you need a Google Maps API key.
To get one, follow this link, follow the directions and press "Create" at the end:
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=5F:28:A4:CD:C1:9D:A8:5A:98:1F:29:B2:4A:7A:96:0F:43:D6:3E:96%3Bcom.google.codelab.usemap
You can also add your credentials to an existing key, using these values:
Package name:
com.google.codelab.usemap
SHA-1 certificate fingerprint:
5F:28:A4:CD:C1:9D:A8:5A:98:1F:29:B2:4A:7A:96:0F:43:D6:3E:96
Alternatively, follow the directions here:
https://developers.google.com/maps/documentation/android/start#get-key
Once you have your key (it starts with "AIza"), replace the "google_maps_key"
string in this file.
-->
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR_KEY_HERE</string>
</resources>
https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=5F:28:A4:CD:C1:9D:A8:5A:98:1F:29:B2:4A:7A:96:0F:43:D6:3E:96%3Bcom.google.codelab.usemap
API 키를 가져옵니다.(Google 계정을 사용해야 함)여기에 이번에 제작한 프로젝트를 추가한다.
그리고 왼쪽 메뉴에서 인증 정보를 선택하여 인증 정보를 만듭니다.위에서 말한 바와 같이 만든 키는 방금 만든
google_maps_api.xml
의 YOUR_KEY_HERE
에 붙여 넣을 것입니다.라이브러리 가져오기
키 생성 및 설정이 완료되면 라이브러리를 가져옵니다.
gradle의
build.gradle
implementation 'com.google.android.gms:play-services-maps:17.0.0'
dependencies에 추가합니다.매핑 설정
호출된 세션의 Activity를 만듭니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportFragmentManager
.beginTransaction()
.replace(R.id.activity_main, MapFragment())
.commit()
}
}
2. Fragment의 제작MapFragment.kt
class MapFragment : Fragment(), OnMapReadyCallback {
private lateinit var mMap: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireActivity().setTitle(R.string.map_list)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_map, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val mapFragment =
childFragmentManager.findFragmentById(R.id.fragment_map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
}
}
fragment_map.xml<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.MapFragment">
<androidx.fragment.app.FragmentContainerView xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.MapFragment"
map:cameraZoom="15.0"
map:layout_constraintTop_toTopOf="parent"
map:layout_constraintBottom_toBottomOf="parent"
map:layout_constraintEnd_toEndOf="parent"
map:layout_constraintEnd_toStartOf="parent"/>
</FrameLayout>
기본 설치와 Activity는 다릅니다.Activity를 구현할 때와 달리 Fragment는 준비
onViewCreated()
를 하고 맵의 Fragment를 호출해야 한다.onCreateView()
에서 호출된 Fragment의 View를 그린 후 Fragment에 설정된 맵의 Fragment("@+id/fragment map")를 생성해야 합니다.참고 문장
https://qiita.com/unpi/items/07592c2643d655ec51a2
https://teratail.com/questions/265715
위치 정보를 얻고 싶은데 길어질 수도 있으니까 포기하고...
Reference
이 문제에 관하여([Kotlin] Fragment에 GoogleMap 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ike_pikmin/items/a8c1a41edb507f320ae1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)