Google Maps SDK — nó là gì, Google Maps và API cho phát triển

Tác giả: IT Sectr Đã đăng: 2026-04-30 Thời gian đọc: 10 phút

Google Maps SDK là một bộ công cụ từ Google để tích hợp bản đồ tương tác, mã hóa địa lý, tuyến đường và tìm kiếm địa điểm vào các ứng dụng di động và web. SDK bao gồm Maps SDK cho Android và iOS, Places API để làm việc với dữ liệu địa lý và Directions API để xây dựng tuyến đường. Các dịch vụ Google Maps xử lý hơn 100 tỷ yêu cầu mỗi ngày, khiến Maps SDK trở thành một trong những giải pháp bản đồ hiệu quả nhất. Theo Google Maps Platform Documentation, 2025, SDK được sử dụng trong 60% tất cả các ứng dụng di động có bản đồ.

Điểm chính

  • Google Maps SDK — nền tảng tích hợp bản đồ, dữ liệu địa lý và định hướng vào ứng dụng
  • Maps SDK — hiển thị bản đồ tương tác với kiểu và lớp có thể tùy chỉnh
  • Places API — tìm kiếm địa điểm, mã hóa địa lý và lấy thông tin về cơ sở
  • Directions API — xây dựng tuyến đường cho các phương tiện khác nhau
  • Thanh toán — trả tiền theo số lượng yêu cầu API ($2-10 cho 1000 yêu cầu)

Google Maps SDK là gì?

Google Maps SDK là một nền tảng toàn diện cho nhà phát triển cung cấp các công cụ để làm việc với dữ liệu địa lý trong ứng dụng. Nền tảng bao gồm một số API: Maps SDK (hiển thị bản đồ), Routes API (tuyến đường), Places API (tìm kiếm địa điểm và dữ liệu địa lý) và Geocoding API (chuyển đổi địa chỉ thành tọa độ). Mỗi SDK tích hợp riêng biệt và có mô hình thanh toán riêng.

Không giống Apple MapKit, Google Maps SDK cung cấp bộ dữ liệu rộng hơn: thông tin về 250 triệu địa điểm, giao thông thời gian thực, toàn cảnh Street View và Indoor Maps cho các tòa nhà. Theo Statista (2025), Google Maps Platform chiếm 75% thị trường SDK bản đồ trong các ứng dụng di động. Lợi thế chính là một khóa API duy nhất cho tất cả các dịch vụ Google Maps và tích hợp đa nền tảng (Android, iOS, web).

Khóa API và thiết lập bảo mật

Khóa API là yếu tố bắt buộc để làm việc với Google Maps SDK. Khóa được tạo trong Google Cloud Console và gắn với một dự án cụ thể. Đối với Android, cần chỉ định chứng chỉ SHA-1 của ứng dụng; đối với iOS — Bundle Identifier. Google khuyến nghị hạn chế sử dụng khóa API theo địa chỉ IP, trình giới thiệu HTTP hoặc gói ứng dụng để ngăn chặn truy cập trái phép.

Maps SDK cho Android: Tích hợp và tính năng

Maps SDK cho Android là một thư viện hiển thị bản đồ Google tương tác bên trong ứng dụng Android thông qua MapView hoặc SupportMapFragment. SDK hỗ trợ: kiểu bản đồ tùy chỉnh, điểm đánh dấu với cửa sổ thông tin, đa giác và đa tuyến, lớp giao thông và vận chuyển, cũng như các sự kiện chạm và cử chỉ (thu phóng, xoay, nghiêng). Bản đồ sử dụng OpenGL để kết xuất, cung cấp 60 FPS trên các thiết bị hiện đại.

Tích hợp bắt đầu bằng cách thêm phụ thuộc vào build.gradle và cấu hình khóa API qua AndroidManifest.xml. Google Maps SDK cho Android yêu cầu Google Play Services trên thiết bị. Nếu Google Play Services không có sẵn (ví dụ, trên thiết bị Huawei không có dịch vụ Google), bản đồ sẽ không hiển thị. Trong những trường hợp này, Google khuyến nghị sử dụng các giải pháp thay thế hoặc WebView với JavaScript Maps API.

kotlin
// AndroidManifest.xml — siêu dữ liệu khóa API
// 
//     android:value="YOUR_API_KEY"/>

// Đoạn bản đồ trong 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))
    }
}

Google Maps SDK trên Android hỗ trợ Indoor Maps — hiển thị sơ đồ tầng của tòa nhà (sân bay, trung tâm thương mại). Chỉ cần đặt map.isIndoorEnabled = true để kích hoạt. Lớp giao thông hiển thị tình trạng ùn tắc đường bộ theo thời gian thực — dữ liệu được cập nhật mỗi 2-5 phút. Lớp vận chuyển hiển thị các tuyến giao thông công cộng trong các thành phố được hỗ trợ.

Maps SDK cho iOS: Thiết lập và sử dụng

Maps SDK cho iOS cung cấp các tính năng tương tự như phiên bản Android nhưng được điều chỉnh cho nền tảng Apple. Tích hợp được thực hiện thông qua Swift Package Manager hoặc CocoaPods. Maps SDK cho iOS sử dụng máy chủ Google để kết xuất bản đồ nhưng có thể hoạt động cùng với Apple MapKit cho định hướng gốc. SDK hỗ trợ iOS 15 trở lên, cũng như SwiftUI thông qua UIViewRepresentable.

Đặc điểm cụ thể của phiên bản iOS là cấu hình bắt buộc Info.plist với khóa API và thêm lược đồ URL cho Google Maps. Không giống Android, iOS SDK không yêu cầu Google Play Services nhưng yêu cầu ứng dụng Google Maps được cài đặt cho một số chức năng (ví dụ, mở bản đồ trong định hướng). Đối với các dự án đa nền tảng, Google khuyến nghị một khóa API duy nhất cho mỗi dự án, được kích hoạt cho cả hai nền tảng.

swift
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
    }
}

Trên iOS, Google Maps SDK hỗ trợ kiểu tùy chỉnh thông qua tập tin JSON ở định dạng Google Maps Styling. Kiểu cho phép thay đổi màu sắc của đường xá, nước, công viên và tòa nhà theo thiết kế ứng dụng. Cũng được hỗ trợ: Heatmap Layer để trực quan hóa mật độ dữ liệu, KML và GeoJSON để nhập dữ liệu địa lý từ các nguồn bên ngoài.

Places API: Tìm kiếm địa điểm và mã hóa địa lý

Places API là dịch vụ Google Maps Platform để lấy thông tin về các địa điểm: địa chỉ, tọa độ, xếp hạng, giờ làm việc, ảnh và đánh giá. Places API hoạt động ở hai chế độ: Place Search (tìm kiếm theo văn bản hoặc bán kính) và Place Details (thông tin chi tiết về một địa điểm cụ thể theo Place ID). SDK có sẵn cho Android, iOS và dưới dạng API REST.

Places SDK cho Android và iOS cho phép nhúng tự động hoàn thành địa chỉ (Place Autocomplete) trực tiếp vào các trường văn bản của ứng dụng. Đây là tính năng chính cho các ứng dụng giao hàng, taxi và logistics — người dùng bắt đầu nhập địa chỉ và SDK đề xuất các tùy chọn từ cơ sở dữ liệu Google Maps. Place Autocomplete giảm lỗi nhập địa chỉ xuống 80% so với nhập thủ công. Thanh toán Places API: $2.83 cho 1000 yêu cầu Place Details, Place Search — $4.71 cho 1000.

kotlin
// Tìm địa điểm theo văn bản trên 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}")
        }
    }

Place Autocomplete

Geocoding API — mã hóa địa lý ngược (tọa độ thành địa chỉ) và trực tiếp (địa chỉ thành tọa độ). Được sử dụng để chuyển đổi địa chỉ do người dùng nhập thành tọa độ để hiển thị trên bản đồ. Geocoding API được thanh toán riêng: $4.71 cho 1000 yêu cầu. Google cung cấp 200 yêu cầu miễn phí mỗi ngày cho mỗi tài khoản để thử nghiệm.

Directions API: Xây dựng tuyến đường

Directions API là dịch vụ tính toán tuyến đường giữa hai hoặc nhiều điểm có tính đến phương tiện di chuyển (ô tô, đi bộ, xe đạp, phương tiện công cộng). API trả về nhiều tuyến đường thay thế với khoảng cách, thời gian di chuyển, hướng dẫn từng bước và đa tuyến để vẽ tuyến đường trên bản đồ. Directions API có sẵn dưới dạng API REST và thông qua SDK khách hàng.

Chức năng mở rộng — Routes API (API mới được Google khuyến nghị từ năm 2024). Routes API cung cấp định tuyến cải tiến với giao thông thời gian thực, định tuyến thân thiện với môi trường và phân tích dự đoán thời gian đến. Theo Google, Routes API tính toán thời gian di chuyển chính xác hơn 20% trong điều kiện đô thị so với Directions API cổ điển. Routes API được thanh toán với giá $5.00 cho 1000 yêu cầu.

kotlin
// Yêu cầu tuyến đường qua 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 hỗ trợ tối đa 25 điểm dừng (waypoints) cho một tuyến đường duy nhất. Các điểm dừng có thể được chỉ định dưới dạng tọa độ hoặc Place ID. Để tối ưu hóa thứ tự các điểm (bài toán người bán hàng du lịch), hãy sử dụng tham số optimize:true. Giá: Directions API — $4.71 cho 1000 yêu cầu (tối đa 10 điểm), mỗi điểm bổ sung thêm 50% vào chi phí yêu cầu.

Tùy chỉnh bản đồ: Kiểu, điểm đánh dấu và cửa sổ thông tin

Google Maps SDK cung cấp các tùy chọn tùy chỉnh rộng rãi: thay đổi bảng màu bản đồ thông qua kiểu JSON, thêm điểm đánh dấu tùy chỉnh (bao gồm hoạt hình), cửa sổ thông tin (InfoWindow) với nội dung tùy chỉnh và lớp phủ đồ họa (GroundOverlay, Circle, Polygon). Tùy chỉnh cho phép điều chỉnh bản đồ theo thương hiệu ứng dụng và cải thiện trải nghiệm người dùng.

Tạo kiểu bản đồ được thực hiện thông qua Google Maps Styling Wizard hoặc tập tin JSON ở định dạng Map Style. Bạn có thể thay đổi màu sắc của đường (featureType: road), nước (water), công viên (poi.park), tòa nhà (building) và các yếu tố khác. Đối với bản đồ trong chủ đề tối, hãy sử dụng kiểu ban đêm với nền tối và màu nhẹ. Google Maps hỗ trợ tối đa 100 quy tắc kiểu trong một tập tin JSON duy nhất.

Yếu tố tùy chỉnhPhương thức/LớpMô tả
Điểm đánh dấuMarkerOptions.icon(BitmapDescriptor)Biểu tượng điểm đánh dấu tùy chỉnh từ tài nguyên hoặc URL
Đa tuyếnPolylineOptions.color(width)Đường để hiển thị tuyến đường với màu tùy chỉnh
Đa giácPolygonOptions.fillColor(strokeColor)Tô màu vùng với độ trong suốt và đường viền
InfoWindowGoogleMap.setInfoWindowAdapterNội dung tùy chỉnh của cửa sổ thông tin (bất kỳ View)
GroundOverlayGroundOverlayOptions.image(BitmapDescriptor)Hình ảnh phủ lên vùng bản đồ

Phân cụm cho hiệu suất

Phân cụm — kết hợp các điểm đánh dấu thành cụm khi có số lượng lớn các điểm trên bản đồ. Google Maps SDK cho Android và iOS bao gồm tiện ích phân cụm tích hợp sẵn (com.google.maps.android:android-maps-utils). Phân cụm ngăn chặn việc bản đồ bị quá tải với các điểm đánh dấu ở các mức thu phóng thấp. Khi phóng to, cụm sẽ tự động tách thành các điểm đánh dấu riêng lẻ. Theo Google, phân cụm cải thiện hiệu suất bản đồ lên 40% với 1000+ điểm đánh dấu.

Ví dụ mã: Bản đồ với điểm đánh dấu trong Kotlin

Một ví dụ hoàn chỉnh về hiển thị bản đồ với điểm đánh dấu tùy chỉnh, đa tuyến tuyến đường và cửa sổ thông tin. Ứng dụng hiển thị bản đồ Moscow với một địa điểm quan tâm và tuyến đường đến đó từ trung tâm thành phố. Mã nguồn minh họa các tính năng chính của Google Maps SDK: thêm điểm đánh dấu, vẽ đa tuyến, di chuyển camera và xử lý nhấp chuột.

kotlin
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("Điện Kremlin")
            .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()
        }
    }
}

Khuyến nghị hiệu suất: sử dụng tải điểm đánh dấu không đồng bộ thông qua ClusterManager khi có hơn 200 điểm, giới hạn số lượng đa tuyến hiển thị (Google khuyến nghị không quá 100 đồng thời), sử dụng Chế độ Lite cho các bản đồ không yêu cầu chức năng đầy đủ (cuộn mà không thay đổi thu phóng). Chế độ Lite giảm tiêu thụ bộ nhớ 50% và tăng tốc độ tải bản đồ lên 2 lần.

Giá cả và giới hạn Google Maps Platform

Google Maps Platform sử dụng mô hình trả tiền theo mức sử dụng với hạn mức miễn phí hàng tháng là $200 tín dụng. Mỗi API được thanh toán riêng: Maps SDK — $2.83 cho 1000 lần tải bản đồ, Places API — $4.71 cho 1000 yêu cầu, Directions API — $4.71 cho 1000 tuyến đường. Routes API (được khuyến nghị) — $5.00 cho 1000 yêu cầu. Hạn mức miễn phí $200 thường bao phủ tới 70.000 lần tải bản đồ mỗi tháng.

Đối với các dự án lưu lượng cao, Google cung cấp giảm giá cho khối lượng 500.000+ yêu cầu mỗi tháng. Google Maps SDK không bị tính phí khi hiển thị bản đồ cơ bản không tương tác — phí chỉ áp dụng cho việc tải bản đồ. Mỗi khi người dùng mở màn hình có bản đồ, đó được tính là một lần tải. Tối ưu hóa: lưu vào bộ nhớ đệm các tile bản đồ giảm số lần tải khi mở lại.

Giới hạn: 300 yêu cầu mỗi phút cho Places API (có thể tăng lên 3000 thông qua hạn ngạch trong Cloud Console). Đối với Directions API — 100 yêu cầu mỗi phút. Vượt quá giới hạn sẽ trả về lỗi OVER_QUERY_LIMIT. Google khuyến nghị sử dụng biện pháp backoff theo hàm mũ (exponential backoff) cho các yêu cầu thử lại. Giám sát sử dụng có sẵn trong Google Cloud Console với độ trễ lên tới 5 phút.

Câu hỏi thường gặp

Chi phí sử dụng Google Maps SDK trong ứng dụng di động là bao nhiêu?

Google Maps SDK được thanh toán theo mô hình trả tiền theo mức sử dụng: $2.83 cho 1000 lần tải bản đồ. Mỗi tháng Google cung cấp $200 tín dụng miễn phí, bao phủ tới 70.000 lần tải bản đồ. Places API và Directions API được thanh toán riêng. Đối với các dự án nhỏ với tới 10.000 người dùng, chi phí thường từ $10-50 mỗi tháng.

Có thể sử dụng Google Maps SDK mà không có kết nối Internet không?

Có, Google Maps SDK hỗ trợ bản đồ ngoại tuyến thông qua lưu vào bộ nhớ đệm tile. SDK tự động lưu vào bộ nhớ đệm tới 1000 tile (khoảng khu vực 10x10 km). Để hỗ trợ ngoại tuyến đầy đủ, hãy sử dụng Google Maps Offline API cho Android, cho phép tải bản đồ của toàn bộ khu vực. Bản đồ ngoại tuyến không hỗ trợ giao thông, tuyến đường hoặc Places API.

Google Maps SDK khác Apple MapKit như thế nào?

Google Maps SDK cung cấp bộ dữ liệu rộng hơn: 250 triệu địa điểm, giao thông thời gian thực, Street View, Indoor Maps. Apple MapKit miễn phí nhưng có ít dữ liệu hơn bên ngoài Mỹ và Châu Âu. Google SDK yêu cầu khóa API và thanh toán, Apple MapKit thì không. Đối với các dự án đa nền tảng, Google Maps SDK được ưa tiên hơn với một API duy nhất cho cả hai nền tảng.

Làm thế nào để có khóa API miễn phí cho Google Maps?

Khóa API được tạo trong Google Cloud Console trong phần APIs and Services, Credentials. Bạn cần liên kết khóa với tài khoản thanh toán để kích hoạt, nhưng Google cung cấp $200 tín dụng miễn phí hàng tháng. Khóa có thể bị giới hạn theo IP, trình giới thiệu HTTP hoặc gói Android/iOS Bundle ID. Không yêu cầu thẻ tín dụng để thử nghiệm.

Google Maps SDK có hỗ trợ phân cụm điểm đánh dấu không?

Có, Google Maps SDK hỗ trợ phân cụm thông qua thư viện android-maps-utils (Android) và Google-Maps-iOS-Utils (iOS). ClusterManager tự động nhóm các điểm đánh dấu gần nhau thành một cụm với chỉ số số. Khi phóng to, cụm sẽ tách thành các điểm đánh dấu riêng lẻ. Phân cụm là bắt buộc với 200+ điểm đánh dấu để duy trì hiệu suất bản đồ.

Tổng kết

  • Google Maps SDK — nền tảng tích hợp bản đồ, dữ liệu địa lý và định hướng vào ứng dụng di động
  • Maps SDK cho Android/iOS hiển thị bản đồ tương tác với hỗ trợ kiểu, điểm đánh dấu và lớp
  • Places API — tìm kiếm địa điểm, tự động hoàn thành địa chỉ và mã hóa địa lý cho ứng dụng dữ liệu địa lý
  • Directions API / Routes API — xây dựng tuyến đường có xem xét giao thông và tối đa 25 điểm dừng
  • Tùy chỉnh bao gồm kiểu JSON, điểm đánh dấu tùy chỉnh, InfoWindow, phân cụm và GroundOverlay
  • Giá cả — trả tiền theo mức sử dụng từ $2.83 cho 1000 lần tải bản đồ với hạn mức miễn phí $200 mỗi tháng
  • Khóa API bắt buộc, liên kết với dự án trong Google Cloud Console và bị giới hạn theo nền tảng

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm