11 điểm bởi GN⁺ 2025-04-25 | 3 bình luận | Chia sẻ qua WhatsApp
  • API geocoding cung cấp chức năng chuyển đổi địa chỉ ↔ tọa độ; reverse geocoding là việc gán địa chỉ đường phố cho một tọa độ cho trước và được dùng trong nhiều ứng dụng khác nhau
  • So sánh 7 dịch vụ API chính theo giá, hạn mức miễn phí và điều kiện sử dụng dữ liệu
    • HERE, Google Maps, Azure Maps, OpenCage, TomTom Maps, LocationIQ, Nominatim
  • Google Maps và Azure Maps có giá cao và nhiều điều kiện hạn chế
  • LocationIQ và OpenCage có giá cố định, rẻ và linh hoạt, đặc biệt có lợi khi dùng với khối lượng lớn
  • TomTom và HERE tính phí theo mức sử dụng mà không có gói cố định, phù hợp cho nhu cầu nhỏ hoặc không thường xuyên

API Geocoding là gì?

  • Geocoding: chuyển đổi địa chỉ → tọa độ vĩ độ/kinh độ
  • Reverse geocoding: chuyển đổi vĩ độ/kinh độ → địa chỉ
  • Các trường hợp sử dụng chính:
    • Hiển thị vị trí trên bản đồ
    • Trực quan hóa dữ liệu khách hàng
    • Tận dụng thông tin tọa độ trong ảnh
    • Tính năng tìm kiếm theo khu vực (sự kiện, nhà hàng, v.v.)
  • Dùng API geocoding có thể triển khai các chức năng trên một cách đơn giản
  • Phần lớn cũng hỗ trợ chuẩn hóa địa chỉ và reverse geocoding

Tiêu chí so sánh

  • Chính sách giá: đa số tính phí theo số lượng request
  • Hạn mức miễn phí: có thể bị giới hạn tính năng hoặc số request
  • Điều kiện sử dụng dữ liệu:
    • Có cho phép sử dụng thương mại hay không
    • Có hạn chế việc hiển thị trên bản đồ hay không
    • Có bắt buộc ghi nguồn hay không, v.v.
  • Trong bài viết sau sẽ tiếp tục so sánh thêm về độ chính xáchiệu năng

Giải thích bối cảnh để đảm bảo tính trung lập

  • Superface không cung cấp API geocoding riêng
  • Thay vào đó, công ty cung cấp OneSDK, một API client mã nguồn mở kết nối nhiều API thông qua một giao diện duy nhất
  • Dữ liệu được gửi trực tiếp đến API mà không đi qua máy chủ của Superface
  • OneSDK hoàn toàn miễn phí và có thể tích hợp đồng thời nhiều API

Tóm tắt đặc điểm theo từng API chính

  • HERE

    • Miễn phí 1.000 lượt/ngày, trong Base Plan miễn phí 30.000 lượt/tháng
    • $0.83/1.000 lượt đến 5M request, $0.66/1.000 lượt đến 10M
    • Cho phép sử dụng thương mại, mức giá linh hoạt
  • Google Maps Platform

    • Tín dụng $200/tháng tương đương 40.000 lượt miễn phí
    • Sau đó là $5/1.000 lượt, với khối lượng lớn là $4/1.000 lượt
    • Chỉ được hiển thị kết quả trên Google Maps, bắt buộc ghi nguồn
    • Giới hạn 50 request/giây
  • Azure Maps

    • Miễn phí 5.000 lượt/tháng, sau đó $4.50/1.000 lượt
    • Geocoding: 500 request/giây, Reverse: 250 request/giây
    • Cùng với Google là gói giá đắt nhất
  • OpenCage

    • Miễn phí: 2.500 lượt/ngày, giới hạn 1 request/giây
    • Trả phí: $50/tháng (10.000 lượt/ngày), $1.000/tháng (300.000 lượt/ngày)
    • “Giới hạn mềm”: vượt ngưỡng không bị chặn ngay lập tức
    • Không cần ghi nguồn, hỗ trợ nhiều loại tiền tệ
  • LocationIQ

    • Miễn phí: 5.000 lượt/ngày, cho phép dùng thương mại (cần liên kết ghi nguồn)
    • $49/tháng (10.000 lượt/ngày), $950/tháng (1M lượt/ngày → 30 triệu/tháng)
    • Đơn giá rẻ nhất ($0.03/1.000 lượt)
    • Cùng chính sách giới hạn mềm
  • TomTom Maps

    • Miễn phí: 2.500 lượt/ngày
    • Sau đó €0.50/1.000 lượt (khoảng $0.54)
    • Cho phép sử dụng thương mại, không có gói giá cố định
  • Nominatim

    • API mã nguồn mở dựa trên OpenStreetMap
    • Miễn phí nhưng chỉ cho phép sử dụng phi thương mại
    • Tối đa 1 request/giây, bắt buộc ghi nguồn
    • Có thể cài đặt trên máy chủ riêng

Tóm tắt so sánh giá

  • Mức sử dụng nhỏ (30.000 lượt/tháng trở xuống)

    • HERE, Google Maps, TomTom, LocationIQ: có thể miễn phí
    • Azure Maps: $112.5/tháng
    • OpenCage: miễn phí hoặc $50/tháng
  • Mức sử dụng trung bình (100.000 lượt/tháng)

    • Rẻ nhất: LocationIQ, TomTom ($16.2)
    • Đắt nhất: Azure Maps ($427.5), Google Maps ($300)
  • Mức sử dụng cao (300.000 lượt/tháng)

    • Rẻ nhất: LocationIQ ($49), TomTom ($121.5)
    • Đắt nhất: Azure Maps ($1,327.5), Google Maps ($1,100)
    • HERE: $224.1
    • OpenCage: $50~$125

Kết luận: gợi ý theo từng tình huống

  • Khối lượng sử dụng cao:
    • Đắt nhất: Azure Maps, Google Maps
    • Rẻ nhất: LocationIQ, OpenCage
  • Nhu cầu sử dụng linh hoạt:
    • TomTom: đơn giá rẻ, không có gói cố định
  • Khi muốn hạn mức miễn phí cao:
    • Google Maps (40.000 lượt), HERE (30.000 lượt)
  • Khi muốn đơn giá tốt nhất:
    • LocationIQ (có thể cung cấp 1M lượt/ngày)
  • Dự án cá nhân/quy mô nhỏ/phi thương mại:
    • Nominatim

Tài liệu tham khảo

3 bình luận

 
amada 2025-04-25

Nếu chỉ dùng cho các khu vực trong nước thì
GeoService có vẻ khá ổn

 
rtyu1120 2025-04-25

Điều tôi tò mò nhất vẫn là mức độ hỗ trợ địa chỉ Hàn Quốc tốt đến đâu...

 
GN⁺ 2025-04-25
Ý kiến trên Hacker News
  • Tài liệu này có nhắc đến các yêu cầu về ghi công, nhưng lại không đề cập đến câu hỏi mà tôi quan tâm nhất về các API geocoding

    • Liệu tôi có thể lưu vĩnh viễn các tọa độ vĩ độ/kinh độ mà API trả về trong cơ sở dữ liệu của mình và dùng chúng cho các truy vấn point-in-polygon hoặc nearest-point hay không
    • Liệu tôi có thể phân phối lại các tọa độ vĩ độ/kinh độ đó qua API của mình hay không
    • Nhiều API geocoding phổ biến, bao gồm cả Google, không cho phép những việc này
    • Điều đó làm hạn chế đáng kể tính hữu dụng của API
    • OpenCage rất tốt vì lý do này
    • "Hãy lưu kết quả geocoding bao lâu tùy thích. Giữ lại kết quả ngay cả khi bạn không còn là khách hàng nữa."
  • Xin chào, tôi là Ed, một trong những nhà sáng lập của OpenCage

    • Thành thật mà nói, bài so sánh này là một so sánh hời hợt chỉ xét về giá
    • Giá cả cũng quan trọng, nhưng với tư cách là người đã làm về geocoding hơn 10 năm, tôi thấy còn rất nhiều yếu tố cần cân nhắc tùy theo nhu cầu của khách hàng
    • Ví dụ như chất lượng, điều khoản sử dụng dữ liệu, hỗ trợ, làm giàu dữ liệu, mức độ dễ sử dụng, tài liệu, điều khoản thanh toán, v.v.
    • Câu trả lời duy nhất cho câu hỏi "dịch vụ geocoding nào là tốt nhất" là "còn tùy trường hợp"
    • Trên trang web của chúng tôi có một hướng dẫn mua geocoding rất toàn diện
    • Nếu cần, hãy liên hệ và tôi sẽ cho biết liệu dịch vụ có phù hợp hay không
  • Thật tuyệt khi thấy những bình luận chất lượng về các API khác nhau và tính năng của chúng

    • Dữ liệu nền tảng về địa chỉ cực kỳ khó tìm
    • Lý do các nhà cung cấp geocoding thương mại không cho lưu dữ liệu là vì họ lo người dùng sẽ lưu đủ dữ liệu để tự xây dựng geocoder riêng
    • Để hỗ trợ việc này, chúng tôi đã khởi động một nhóm tên là OpenAddresses
    • Mục tiêu là tìm toàn bộ dữ liệu địa chỉ công khai trên khắp thế giới
    • Nhiều API sử dụng đây như một phần cốt lõi của các bộ dữ liệu được nhắc đến trong chủ đề này
    • Dự án đã diễn ra hơn 10 năm, nhưng sẽ tốt hơn nếu có thêm nhiều người tìm thêm nhiều nguồn địa chỉ hơn nữa
  • Photon là một thành phần có thể tự host nhưng ít được chú ý

    • Nó dùng dữ liệu geocoder Nominatim của OSM, đồng thời cung cấp cơ sở dữ liệu có thể tải xuống, tính năng tự động hoàn thành và tệp .jar có thể cài đặt
    • Nếu bạn chấp nhận các giới hạn của dữ liệu OSM thì nó dễ dùng và nhanh
  • Một bài kiểm tra tốt cho API geocoding là nhập mã ZIP chỉ dành cho PO Box

    • Ví dụ, nếu nhập 22313 mà nó trả về vị trí gần Alexandria, VA thì đó là một API geocoding khá ổn
    • Nếu không trả về vị trí hoặc trả về nơi khác thì rất có thể sẽ gây vấn đề trong môi trường production
  • OpenCage có giá trị khá tốt nếu phù hợp với use case của bạn

    • Có một số hạn chế, nhưng free tier và giới hạn tốc độ của họ khá hào phóng
    • Tỷ lệ giá/hiệu năng/chất lượng rất xuất sắc
    • Ed Freyfogle là người rất am hiểu về địa lý và cũng rất dễ trao đổi
    • Tài liệu của anh ấy rất tốt và API cực kỳ dễ bắt đầu sử dụng
  • Có một lựa chọn khác

    • Mua một máy chủ Docker giá rẻ
    • Dùng Docker để cài đặt stack OSM/Nominatim
    • Nhờ Docker nên việc thiết lập rất dễ dàng
    • Chi phí cố định và dễ dự đoán
    • Có thể xử lý lượng traffic bạn muốn, và ngay cả một v-server giá rẻ cũng có thể đáp ứng được
    • Không có vấn đề riêng tư với bên thứ ba
  • Geocodio cũng là một lựa chọn tốt

    • Đặc biệt hữu ích khi cần xử lý theo lô
  • Tôi đã nghiên cứu các dịch vụ này vào năm 2019

    • Tôi đã dùng nhiều Azure Maps, MapQuest và Nominatim của OpenStreetMap
    • Vì hạn chế tài chính nên tôi chọn Nominatim
    • Chuẩn hóa địa chỉ là một vấn đề lớn
  • Kể từ khi bài viết này được đăng, Stadia Maps cũng đã ra mắt API geocoding riêng và đã cải thiện đáng kể

    • Nó được xây dựng trên Pelias, nhưng đã cải thiện mạnh về hiệu năng và độ chính xác nhờ các nguồn dữ liệu bổ sung
    • Nếu có câu hỏi, tôi rất sẵn lòng trả lời