구글 맵 연동을 한번 해보자.
우선 맵 api를 가져올 android studio 프로젝트가 없다면 미리 생성을 해두자.
1. https://console.cloud.google.com/apis/dashboard 주소로 들어가,
새 프로젝트를 생성하고 API 및 서비스 항목에서 API 및 서비스 사용 설정을 클릭을 한다.
리스트 중 [Maps SDK for Android] 항목을 클릭하여 [사용] 버튼을 클릭하여 API를 활성화 한다.
2. API 및 서비스에서 [사용자 인증 정보]에 들어가 [+ 사용자 인증 정보 만들기]를 클릭하면
몇개의 메뉴가 나타난다.
API 키를 클릭하면 아래와 같이 API 키가 생성된다.
하단에 있는 [키 제한]을 클릭한다.
앞에서 생성된 키의 제한 이름 등 변경가능하다.
애플리케이션 제한사항에 있는 [Android 앱]을 클릭하고 클릭 후 나타나는 [Android 앱의 사용량 제한]목록에
앱의 패키지 명과 SHA-1 서명 인증서 디지털 지문을 입력하여야 한다.
앱의 패키지명은 현재 적용시킬 앱의 package name을 넣으면 될 것이고,
"C:\Program Files\Android\Android Studio\jre\bin\keytool" -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
SHA-1 서명 인증서 디지털 지문은 cmd 창을 열어 위 명령어를 넣게되면 아래와 같이 SHA-1 코드가 나타난다.
SHA1 : 이후 코드값을 복사하여 넣어주고 완료를 클릭한다.
API 제한사항에서 [키 제한]을 클릭하고 dropdown메뉴에서 [Maps SDK for Android]를 선택한 후 저장해 준다.
3. 생성된 API Key를 복사하여 Andorid Studio로 돌아와 [AndroidManifest.xml]파일의 <application>태그 밑에
아래와 같이 추가해 준다.
<application
android:...
android:... >
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="발급받은 API Key" />
....
....
....
</application>
4. build.gradle에 들어가 dependencies 안에 아래에 있는 라이브러리를 추가해 줍니다.
implementation 'com.google.android.gms:play-services-maps:18.0.0'
implementation 'com.google.android.gms:play-services-location:18.0.0'
5. 맵을 추가할 화면에 fragment 를 넣어준다.
<layout .... >
<...>
<...>
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment" />
<....>
</layout>
6. java 코드로 지도에 표시할 부분(Maker)을 설정하고, 지도를 실행해준다.
//implements OnMapReadyCallback 를 추가
public class Frag_Map extends Fragment implements OnMapReadyCallback {
GoogleMap gMap;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootview = (ViewGroup) inflater.inflate(R.layout.fragment_test, container, false);
//activity일 경우 getChildFragmentManager대신 getSupportFragmentManager를 사용
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return rootview;
}
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
gMap = googleMap;
String str_loc_Nm = "장소명";
double dbl_Lat = (지도상 위도값);
double dbl_Lon = (지도상 경도값);
String str_loc_DescNm = "장소설명";
LatLng Location = new LatLng(dbl_Lat, dbl_Lon);
//지도에 표시할 Maker 만들기
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(Location);
markerOptions.title(str_loc_Nm);
markerOptions.snippet(str_loc_DescNm);
gMap.addMarker(markerOptions);
//지도를 해당 위치로 이동, 줌 배수 설정
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Location, 10));
}
}
앱으로 실행하여 확인 결과 원하는 결과를 얻을 수 있었다.
'Programing > android' 카테고리의 다른 글
[android studio] 스플래시(Splash) 화면 만들기 (0) | 2021.11.05 |
---|---|
[android studio] Cleartext HTTP traffic to...not permitted 오류 (0) | 2021.11.05 |
[android studio] context 종류 및 역활 (0) | 2021.11.04 |
[android studio] 인앱리뷰(In-App Review) 구현 및 실행 오류 (0) | 2021.11.04 |
[android studio] 오류 : Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. (0) | 2021.11.01 |
댓글