안드로이드 앱 개발은 오늘날 가장 인기 있는 모바일 개발 분야 중 하나입니다. 다양한 라이브러리와 프레임워크를 통해 개발자들은 훌륭한 사용자 경험을 제공하는 앱을 만들 수 있습니다. 이번 강좌에서는 자바를 사용하여 구글 지도를 활용한 안드로이드 앱을 만드는 방법에 대해 설명하겠습니다. 본 강좌는 다음과 같은 단계로 진행됩니다:
- 1. 프로젝트 설정
- 2. 구글 지도 API 설정
- 3. 지도를 앱에 표시하기
- 4. 마커 추가 및 사용자 위치 표시
- 5. 지도 스타일 및 기능 추가
1. 프로젝트 설정
먼저, 안드로이드 스튜디오를 열고 새로운 프로젝트를 생성합니다. 다음과 같은 설정을 따라 프로젝트를 설정합니다:
- 이름: GoogleMapsApp
- 패키지 이름: com.example.googlemapsapp
- 언어: Java
- 최소 API 레벨: API 21: Android 5.0 (Lollipop)
프로젝트가 생성되면, app/build.gradle
파일에 구글 지도 라이브러리를 추가해야 합니다. 이를 위해 다음 코드를 dependencies 섹션에 추가합니다:
implementation 'com.google.android.gms:play-services-maps:18.0.2'
이제 Gradle 파일을 Sync하여 종속성을 업데이트합니다.
2. 구글 지도 API 설정
구글 지도를 사용하기 위해서는 구글 클라우드 플랫폼에서 API 키를 발급받아야 합니다. 다음 단계를 따라 구글 지도 API 키를 생성합니다:
- 구글 클라우드 플랫폼에 로그인하여 새 프로젝트를 생성합니다.
- 대시보드에서 ‘API 및 서비스’ -> ‘라이브러리’로 이동합니다.
- ‘Google Maps Android API’를 검색하고 활성화합니다.
- ‘API 및 서비스’ -> ‘사용자인증 정보’에서 ‘사용자인증 정보 만들기’ 버튼을 클릭합니다.
- API 키를 선택하고 생성하여 발급받은 키를 복사합니다.
발급받은 API 키는 AndroidManifest.xml
파일 내에 추가해야 합니다:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googlemapsapp">
<application>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
...
</application>
</manifest>
이제 구글 지도 API를 사용할 준비가 완료되었습니다.
3. 지도를 앱에 표시하기
구글 지도를 앱에 표시하기 위해 지도 프래그먼트를 레이아웃에 추가해야 합니다. res/layout/activity_main.xml
파일을 열고 다음 코드를 추가합니다:
<RelativeLayout 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=".MainActivity">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
다음으로, MainActivity.java
파일에서 지도를 초기화하고 표시하는 코드를 추가하겠습니다:
import androidx.fragment.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// 지도의 중심 위치 설정
LatLng seoul = new LatLng(37.56, 126.97);
mMap.moveCamera(CameraUpdateFactory.newLatLng(seoul));
}
}
위의 코드에서, 지도가 준비되면 서울의 위치로 카메라를 이동하도록 설정했습니다.
4. 마커 추가 및 사용자 위치 표시
이제 사용자가 정의한 위치에 마커를 추가해 보겠습니다. onMapReady
메서드에 다음 코드를 추가하여 마커를 배치합니다:
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// 지도의 중심 위치 설정
LatLng seoul = new LatLng(37.56, 126.97);
mMap.moveCamera(CameraUpdateFactory.newLatLng(seoul));
// 마커 추가
mMap.addMarker(new MarkerOptions().position(seoul).title("Marker in Seoul"));
// 사용자 위치 표시 허용
mMap.setMyLocationEnabled(true);
}
위의 코드는 서울 위치에 마커를 추가하고 사용자의 현재 위치를 표시하는 기능을 활성화합니다.
5. 지도 스타일 및 기능 추가
마지막으로, 구글 지도에 스타일을 추가하고 몇 가지 기능을 확장해 보겠습니다. 예를 들어, 사용자 위치가 변경될 때 마커를 업데이트하도록 하겠습니다:
import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private FusedLocationProviderClient fusedLocationClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng seoul = new LatLng(37.56, 126.97);
mMap.moveCamera(CameraUpdateFactory.newLatLng(seoul));
mMap.addMarker(new MarkerOptions().position(seoul).title("Marker in Seoul"));
mMap.setMyLocationEnabled(true);
// 사용자 위치 업데이트 설정
startLocationUpdates();
}
private void startLocationUpdates() {
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(10000);
locationRequest.setFastestInterval(5000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationCallback locationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
// 사용자 위치 업데이트
LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
mMap.addMarker(new MarkerOptions().position(userLocation).title("You are here"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(userLocation));
}
}
};
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null);
}
}
위의 코드는 사용자의 위치가 변경될 때마다 마커를 업데이트하여 지도 위에 사용자 위치를 반영합니다.
결론
이제 기본적인 구글 지도 앱을 만들기 위한 모든 단계를 완료했습니다. 이 앱은 비즈니스나 개인 프로젝트등 다양한 용도로 확장할 수 있습니다. 필요한 추가 기능, 예를 들어 다양한 마커 스타일, 경로 표시, 또는 여러 위치 검색 등을 쉽게 구현할 수 있습니다. 안드로이드 앱 개발에 있어 구글 지도 API는 매우 유용한 도구입니다. 더 나아가 이 API를 사용하여 사용자에게 풍부한 경험을 제공할 수 있습니다. 다음 단계로는 이 앱을 추가 기능과 스타일로 발전시키는 것입니다.
이 강좌가 여러분의 앱 개발에 재미와 도움이 되었기를 바랍니다. 이제 여러분만의 구글 지도 앱을 만들어 보세요!