-
안드로이드 스튜디오 구글맵api 사용방법program_language 및 궁금한것/Android Studio 2019. 3. 21. 15:07
안드로이드 스튜디오(Android Studio)에서 구글맵api 사용방법
나중에 보려고 정리를 해놨다.
다른 사람들에게도 도움이 되길 바란다.
구글 로그인 후 구글api 사이트로 접속한다.
아래 사진 순서대로 새 프로젝트를 생성한다.
안드로이드 스튜디오에서 새 프로젝트를 생성한다.
package name은 임의대로 바꿔준다. 연습용은 안바꿔도 됨
아래 설정과 같이 따라한다.
내가 만든 이름의 build.gradle을 아래 사진과 같이 바꿔준다.
dependencies도 잘 추가 해준다.
아래 노란박스 드래그 해서 붙여 넣어도 됨
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.gms:play-services:12.0.1'
compile 'com.android.support:multidex:1.0.3'
}
아래 사진을 보고 library를 추가 해 준다.
xml을 아래와 같이 그린다.
MainActivity.java에서 extands와 implements를 해준다.
좀전의 api페이지로 들어가 사용자 인증정보- api키를 복사한다.
아래 사진과 같이 따라서 파일을 생성한다.
마지막 회색부분엔 좀전에 복사해 놓은 키를 붙여 넣는다.
Manifest에서 빨간 박스 부분을 추가한다.
위의 깃 주소에서 myapplication을 다운 받아 안드로이드에 코드를 넣는다.
혹은 코드를 복사해서 MainActivity에 붙여넣기를 한다.
package com.myway.korea.googlemap;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.FragmentManager;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.nfc.Tag;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getFragmentManager();
MapFragment mapFragment = (MapFragment) fragmentManager.findFragmentById(R.id.map);
// 맵이 실행되면 onMapReady 실행
mapFragment.getMapAsync(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
checkPermission();
}
}
@Override
public void onMapReady(final GoogleMap googleMap) {
// 구글에서 등록한 api와 엮어주기
// 시작위치를 서울 시청으로 변경
LatLng cityHall = new LatLng(37.566622, 126.978159); // 서울시청 위도와 경도
googleMap.moveCamera(CameraUpdateFactory.newLatLng(cityHall));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));
// 시작시 마커 생성하기
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(cityHall);
markerOptions.title("시청");
markerOptions.snippet("서울 시청");
// 생성된 마커 옵션을 지도에 표시
googleMap.addMarker(markerOptions);
// 서울광장마커
// 회사 DB에 데이터를 가지고 있어야 된다.
LatLng plaza = new LatLng(37.565785, 126.978056);
markerOptions.position(plaza);
markerOptions.title("광장");
markerOptions.snippet("서울 광장");
googleMap.addMarker(markerOptions);
//맵 로드 된 이후
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
Toast.makeText(MainActivity.this, "Map로딩성공", Toast.LENGTH_SHORT).show();
}
});
//카메라 이동 시작
googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
@Override
public void onCameraMoveStarted(int i) {
Log.d("set>>","start");
}
});
// 카메라 이동 중
googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
Log.d("set>>","move");
}
});
// 지도를 클릭하면 호출되는 이벤트
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
// 기존 마커 정리
googleMap.clear();
// 클릭한 위치로 지도 이동하기
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
// 신규 마커 추가
MarkerOptions newMarker=new MarkerOptions();
newMarker.position(latLng);
googleMap.addMarker(newMarker);
}
});
}
@TargetApi(Build.VERSION_CODES.M)
private void checkPermission() {
String[] permissions = {
// Manifest는 android를 import
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
};
int permissionCheck = PackageManager.PERMISSION_GRANTED;
for (String permission : permissions) {
permissionCheck = this.checkSelfPermission(permission);
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
break;
}
}
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
this.requestPermissions(permissions, 1);
}
}
}
이런 지도 모양에 위치들을 추가 해놓은 모양이 뜰 것이다.
실행시 지도가 뜨지 않는다면 아래 설정을 따라한다.
문의 있으시면 댓글 주세용
반응형'program_language 및 궁금한것 > Android Studio' 카테고리의 다른 글
안드로이드 FirebaseCloudMessaging 서비스 사용법정리 (0) 2019.04.07 웹서버란? (0) 2019.03.24 SQLite 간단 설명 (0) 2019.03.10 상단 메뉴 만들기 (0) 2019.03.09 헷갈렸던 list아이템 클릭 확실히 알기 (0) 2019.02.24