Google Maps SDK는 모바일 및 웹 애플리케이션에 인터랙티브 지도, 지리코딩, 경로 및 장소 검색을 통합하기 위한 Google의 도구 집합입니다. SDK는 Android 및 iOS용 Maps SDK, 지리 데이터를 다루기 위한 Places API, 그리고 경로 구축을 위한 Directions API를 포함합니다. Google Maps 서비스는 하루 100억 개 이상의 요청을 처리하여 Maps SDK를 가장 능력이 뛐어난 맵핑 해결책 중 하나로 만듭니다. Google Maps Platform Documentation, 2025에 따르면, SDK는 지도가 있는 모든 모바일 애플리케이션의 60%에서 사용됩니다.
주요 요점
Google Maps SDK는 애플리케이션에서 지리적 데이터를 다루기 위한 도구를 제공하는 개발자를 위한 포괄적인 플랫폼입니다. 이 플랫폼에는 여러 API가 포함됩니다: Maps SDK(지도 표시), Routes API(경로), Places API(장소 검색 및 지리 데이터), Geocoding API(주소를 좌표로 변환). 각 SDK는 별도로 통합되며 각기 자체의 결제 모델을 가집니다.
Apple MapKit과 달리 Google Maps SDK는 더 넓은 데이터 세트를 제공합니다: 2억 5천만 개의 장소 정보, 실시간 교통 정보, Street View 패노라마, 건물용 Indoor Maps. Statista (2025)에 따르면 Google Maps Platform이 모바일 애플리케이션에서 맵핑 SDK 시장의 75%를 차지하고 있습니다. 주요 장점은 모든 Google Maps 서비스에 대한 단일 API 키와 크로스-플랫폼 통합(Android, iOS, web)입니다.
API 키는 Google Maps SDK와 작업하기 위한 필수 요소입니다. 키는 Google Cloud Console에서 생성되며 특정 프로젝트에 바인드됩니다. Android의 경우 애플리케이션의 SHA-1 인증서를 지정해야 하고, iOS의 경우 Bundle Identifier를 지정해야 합니다. Google은 뭄귌한 접근을 방지하기 위해 IP 주소, HTTP 리퍼러 또는 애플리케이션 패키지로 API 키 사용을 제한할 것을 권장합니다.
Android용 Maps SDK는 MapView 또는 SupportMapFragment를 통해 Android 애플리케이션 내에서 인터랙티브 Google 지도를 표시하는 라이브러리입니다. SDK는 커스턴 지도 스타일, 정보 창이 있는 마커, 다각형과 다중선, 교통 및 대중교통 레이어, 그리고 터치 이벤트와 제스처(줌, 회전, 기울기)를 지원합니다. 지도는 렌더링에 OpenGL을 사용하여 최신 기기에서 60 FPS를 제공합니다.
통합은 build.gradle에 종속성을 추가하고 AndroidManifest.xml을 통해 API 키를 구성하면서 시작됩니다. Android용 Google Maps SDK는 기기에 Google Play Services가 필요합니다. Google Play Services를 사용할 수 없는 경우(예: Google 서비스가 없는 Huawei 기기) 지도가 표시되지 않습니다. 이런 경우 Google은 대체 해결책 또는 JavaScript Maps API를 사용한 WebView를 권장합니다.
// AndroidManifest.xml — API 키 메타데이터
//
// android:value="YOUR_API_KEY"/>
// Activity의 맵 파라그먼트
class MapActivity : AppCompatActivity(),
OnMapReadyCallback {
private lateinit var map: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_map)
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
override fun onMapReady(googleMap: GoogleMap) {
map = googleMap
val sydney = LatLng(-33.8688, 151.2093)
map.addMarker(MarkerOptions().position(sydney)
.title("Sydney"))
map.moveCamera(CameraUpdateFactory
.newLatLngZoom(sydney, 12f))
}
} Android에서 Google Maps SDK는 Indoor Maps를 지원합니다 — 건물 플로어 플란 표시(공항, 쇼핑몰). 기능을 활성화하려면 map.isIndoorEnabled = true를 설정하면 됩니다. 교통 레이어는 실시간 도로 혜잡을 표시합니다 — 데이터는 2-5분마다 업데이트됩니다. 대중교통 레이어는 지원되는 도시에서 대중교통 노선을 표시합니다.
iOS용 Maps SDK는 Android 버전과 동일한 기능을 제공하지만 Apple 플랫폼에 맞게 적응되었습니다. 통합은 Swift Package Manager 또는 CocoaPods를 통해 수행됩니다. iOS용 Maps SDK는 지도 렌더링에 Google 서버를 사용하지만 네이티브 내비게이션을 위해 Apple MapKit과 함께 작동할 수 있습니다. SDK는 iOS 15 이상 및 UIViewRepresentable을 통한 SwiftUI를 지원합니다.
iOS 버전의 특징은 API 키가 포함된 Info.plist의 필수 구성과 Google Maps용 URL 스키머 추가입니다. Android과 달리 iOS SDK는 Google Play Services가 필요하지 않지만 일부 기능(예: 내비게이션에서 지도 열기)에는 Google Maps 앱이 필요합니다. 크로스-플랫폼 프로젝트의 경우 Google은 두 플랫폼에 대해 활성화된 단일 API 키를 권장합니다.
import GoogleMaps
class MapViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.camera(
withLatitude: 55.7558,
longitude: 37.6173,
zoom: 10
)
let mapView = GMSMapView.map(
withFrame: view.frame,
camera: camera
)
self.view = mapView
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(
latitude: 55.7558,
longitude: 37.6173
)
marker.title = "Moscow"
marker.map = mapView
}
}iOS에서 Google Maps SDK는 Google Maps Styling 형식의 JSON 파일을 통해 커스턴 스타일을 지원합니다. 스타일을 통해 액 디자인에 따라 도로, 물, 공원, 건물의 색상을 변경할 수 있습니다. 또한 데이터 밀도 시각화를 위한 Heatmap Layer, 외부 소스에서 지리 데이터를 가져오기 위한 KML 및 GeoJSON이 지원됩니다.
Places API는 지리적 장소에 대한 정보(주소, 좌표, 평가, 영업 시간, 사진, 리뷰)를 획득하기 위한 Google Maps Platform 서비스입니다. Places API는 두 가지 모드로 동작합니다: Place Search(텍스트 또는 반경에 의한 검색) 및 Place Details(Place ID로 특정 장소에 대한 상세 정보). SDK는 Android, iOS 및 REST API로 사용 가능합니다.
Android 및 iOS용 Places SDK는 앱의 텍스트 필드에 주소 자동 완성(Place Autocomplete)을 바로 \uc784베드할 수 있습니다. 이는 배달, 택시 및 물류 앱에 키 기능입니다 — 사용자가 주소를 입력하기 시작하면 SDK가 Google Maps 데이터베이스에서 옵션을 제시합니다. Place Autocomplete는 수동 입력에 비해 주소 입력 오류를 80% 감소시킵니다. Places API 결제: Place Details $2.83/1000요청, Place Search $4.71/1000요청.
// Android에서 텍스트로 장소 검색
val placesClient = Places.createClient(context)
val request = FindCurrentPlaceRequest.builder(
listOf(Place.Field.NAME, Place.Field.ADDRESS)
).build()
placesClient.findCurrentPlace(request)
.addOnSuccessListener { response ->
for (placeLikelihood in response.placeLikelihoods) {
Log.d("Places", "${placeLikelihood.place.name} - ${placeLikelihood.likelihood}")
}
}Geocoding API — 역지리코딩(좌표 → 주소) 및 순지리코딩(주소 → 좌표)입니다. 사용자가 입력한 주소를 지도에 표시하기 위한 좌표로 변환하는 데 사용됩니다. Geocoding API는 별도로 결제됩니다: $4.71/1000요청. Google은 테스트용으로 계정당 하루 200개의 무료 요청을 제공합니다.
Directions API는 교통 수단(차, 도보, 자전거, 대중교통)을 고려하여 둘 이상의 포인트 간 경로를 계산하는 서비스입니다. API는 거리, 여행 시간, 단계별 지시 사항 및 지도에 경로를 그리기 위한 다중선을 포함한 여러 대체 경로를 반환합니다. Directions API는 REST API 및 클라이언트 SDK로 사용 가능합니다.
확장 기능 — Routes API(2024년부터 Google이 권장하는 새 API). Routes API는 실시간 교통 정보, 환경 친화적인 라우팅 및 예측 도착 시간 분석으로 개선된 경로 지정을 제공합니다. Google에 따르면 Routes API는 기존 Directions API에 비해 도시 환경에서 여행 시간을 20% 더 정확하게 계산합니다. Routes API 결제: $5.00/1000요청.
// Routes API를 통한 경로 요청
val client = OkHttpClient()
val requestBody = """
{
"origin": {"location": {"latLng": {"latitude": 55.75, "longitude": 37.61}}},
"destination": {"location": {"latLng": {"latitude": 55.79, "longitude": 37.79}}},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE"
}
""".trimIndent()
val request = Request.Builder()
.url("https://routes.googleapis.com/directions/v2:computeRoutes")
.header("X-Goog-Api-Key", apiKey)
.header("Content-Type", "application/json")
.post(requestBody.toRequestBody())
.build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
Log.d("Route", response.body?.string() ?: "")
}
})Directions API는 단일 경로에 최대 25개의 경거점(waypoints)을 지원합니다. 경거점은 좌표 또는 Place ID로 지정할 수 있습니다. 포인트 순서를 최적화하려면(외판원 문제) optimize:true 매개변수를 사용하십시오. 요금: Directions API $4.71/1000요청(10개 포인트까지), 추가 포인트마다 요청 비용이 50% 증가합니다.
Google Maps SDK는 광범위한 커스터마이징 옵션을 제공합니다: JSON 스타일을 통한 지도 색상 스키머 변경, 커스턴 마커(애니메이션 포함), 커스턴 콘텐츠의 정보 창(InfoWindow) 및 그래픽 레이어 오버레이(GroundOverlay, Circle, Polygon). 커스터마이징을 통해 액의 브랜드에 맞게 지도를 조정하고 사용자 경험을 향상시킬 수 있습니다.
지도 스타일링은 Google Maps Styling Wizard 또는 Map Style 형식의 JSON 파일을 통해 수행됩니다. 도로(featureType: road), 물(water), 공원(poi.park), 건물(building) 등의 색상을 변경할 수 있습니다. 어둡온 테마의 액에서는 어둡온 배경과 누그러진 색상의 밤 스타일을 사용하십시오. Google Maps는 단일 JSON 파일에서 최대 100개의 스타일 규칙을 지원합니다.
| 커스터마이징 요소 | 메소드/클래스 | 설명 |
|---|---|---|
| 마커 | MarkerOptions.icon(BitmapDescriptor) | 리소스 또는 URL에서 가져온 커스턴 마커 아이콘 |
| 다중선 | PolylineOptions.color(width) | 커스턴 색상으로 경로를 표시하는 선 |
| 다각형 | PolygonOptions.fillColor(strokeColor) | 투명도와 테두리로 영역 채우기 |
| InfoWindow | GoogleMap.setInfoWindowAdapter | 정보 창의 커스턴 콘텐츠(임의 View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | 지도 영역에 중첩된 이미지 |
클러스터링 — 지도에 포인트가 많을 때 마커를 클러스터로 결합하는 것입니다. Android 및 iOS용 Google Maps SDK에는 내장 클러스터링 유틸리티(com.google.maps.android:android-maps-utils)가 포함되어 있습니다. 클러스터링은 특정 줌 레벨 이하에서 마커가 지도를 과변하는 것을 방지합니다. 줌을 하면 클러스터가 자동으로 개별 마커로 분할됩니다. Google에 따르면 1000+ 마커에서 클러스터링이 지도 성능을 40% 향상시킵니다.
커스턴 마커, 경로 다중선 및 정보 창이 있는 지도를 표시하는 완전한 예입니다. 앱은 관심 포인트와 시내 중심에서 그 곳까지의 경로가 있는 모스크바 지도를 표시합니다. 코드는 Google Maps SDK의 주요 기능을 보여줍니다: 마커 추가, 다중선 그리기, 카메라 이동 및 클릭 처리.
class MapDemoActivity : AppCompatActivity(), OnMapReadyCallback {
override fun onMapReady(map: GoogleMap) {
val kremlin = LatLng(55.7513, 37.6189)
val gorkyPark = LatLng(55.7311, 37.6116)
map.addMarker(MarkerOptions()
.position(kremlin)
.title("크레뮬린")
.icon(BitmapDescriptorFactory.defaultMarker(
BitmapDescriptorFactory.HUE_RED)))
map.addPolyline(PolylineOptions()
.add(kremlin, gorkyPark)
.width(5f)
.color(Color.parseColor("#2196F3")))
map.moveCamera(CameraUpdateFactory
.newLatLngZoom(kremlin, 13f))
map.setOnInfoWindowClickListener { marker ->
Toast.makeText(this,
"${marker.title} clicked",
Toast.LENGTH_SHORT).show()
}
}
}성능 권장 사항: 200개 이상의 포인트가 있는 경우 ClusterManager를 통해 비동기 마커 로딩을 사용하고, 표시되는 다중선의 수를 제한하며(Google은 동시에 100개 이하를 권장), 온전한 기능이 필요하지 않은 지도에는 Lite Mode를 사용하십시오(줌 변경 없이 스크롤). Lite Mode는 메모리 소비를 50% 감소시키고 지도 로딩을 2배 가속합니다.
Google Maps Platform은 월 $200 무료 크레딕이 있는 사용량별 결제 모델을 사용합니다. 각 API는 별도로 결제됩니다: Maps SDK $2.83/1000 지도 로드, Places API $4.71/1000요청, Directions API $4.71/1000경로. Routes API(권장) $5.00/1000요청. 무료 $200 제한은 보통 월 70,000 지도 로드까지 담니다.
트래픽이 많은 프로젝트의 경우 Google은 월 500,000+ 요청 불러에 대한 할인을 제공합니다. Google Maps SDK는 상호작용이 없는 기본 지도 표시에 대해서는 요금이 부과되지 않습니다 — 요금은 지도 로드에만 부과됩니다. 사용자가 지도가 있는 화면을 열 때마다 하나의 로드로 계산됩니다. 최적화: 지도 타일 캐시는 재열 시 로드 수를 감소시킵니다.
제한: Places API 분당 300요청(Cloud Console의 할당량을 통해 3000까지 능려 가능). Directions API 분당 100요청. 제한을 초과하면 OVER_QUERY_LIMIT 오류가 반환됩니다. Google은 재시도 요청에 지수적 백오프를 권장합니다. 사용 모니터링은 Google Cloud Console에서 최대 5분 지연으로 이용 가능합니다.
자주 묻는 질문
Google Maps SDK는 사용량별 결제 모델로 결제됩니다: $2.83/1000 지도 로드. Google은 매달 $200의 무료 크레딕을 제공하여 70,000까지 지도 로드를 담니다. Places API와 Directions API는 별도로 결제됩니다. 10,000 사용자까지의 작은 프로젝트의 경우 비용은 보통 월 $10-50입니다.
네, Google Maps SDK는 타일 캐시를 통해 오프라인 지도를 지원합니다. SDK는 자동으로 최대 1000개의 타일(약 10x10 km 영역)을 캐시합니다. 완전한 오프라인 지원을 위해서는 Android용 Google Maps Offline API를 사용하여 전체 지역의 지도를 다운로드할 수 있습니다. 오프라인 지도는 교통 정보, 경로 또는 Places API를 지원하지 않습니다.
Google Maps SDK는 더 넓은 데이터 세트를 제공합니다: 2억 5천만 장소, 실시간 교통, Street View, Indoor Maps. Apple MapKit은 무료이지만 미국 및 유럽 외에서는 데이터가 적습니다. Google SDK는 API 키와 결제가 필요하지만 Apple MapKit은 그렇지 않습니다. 크로스-플랫폼 프로젝트의 경우 두 플랫폼에 대한 단일 API를 가진 Google Maps SDK가 더 좋습니다.
API 키는 Google Cloud Console의 APIs and Services, Credentials 섹션에서 생성됩니다. 키를 활성화하려면 결제 계정에 링크해야 하지만 Google은 월 $200의 무료 크레딕을 제공합니다. 키는 IP, HTTP 리퍼러 또는 Android 패키지/iOS Bundle ID로 제한할 수 있습니다. 테스트에 신용 카드가 필요하지 않습니다.
네, Google Maps SDK는 android-maps-utils 라이브러리(Android)와 Google-Maps-iOS-Utils(iOS)를 통해 클러스터링을 지원합니다. ClusterManager는 가까운 마커를 숫자 표시가 있는 클러스터로 자동으로 그룹화합니다. 줌을 하면 클러스터가 개별 마커로 분할됩니다. 200+ 마커에서 지도 성능을 유지하려면 클러스터링이 필수입니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.