TỔNG QUAN
Geocode là API chuyển đổi địa chỉ (ví dụ: địa chỉ nhà, cửa hàng…) thành tọa độ địa lý (kinh độ, vĩ độ) và ngược lại. API này cho phép người dùng lấy được thông tin địa lý chi tiết như vị trí, mã vùng, quận/huyện, và thậm chí là các địa điểm kinh doanh.
Geocode API có 3 chức năng chính:
-
Forward geocode: Chuyển đổi từ địa chỉ sang tọa độ
-
Reverse geocode: Chuyển đổi từ tọa độ địa lý (kinh độ, vĩ độ) sang địa chỉ
-
Tra cứu theo place_id: Nhận thông tin chi tiết về địa điểm qua mã place_id
Điểm nổi bật của V2 là khả năng cập nhật chính xác tên địa phương mới theo các quyết định sáp nhập, điều chỉnh địa giới hành chính. Ví dụ, các địa chỉ thuộc huyện cũ sẽ tự động được gán đúng vào đơn vị hành chính mới (đã sáp nhập), giúp đảm bảo kết quả luôn khớp với thực tế hiện hành.
CÁCH SỬ DỤNG GEOCODE
Đầu tiên, bạn phải đăng ký tài khoản và tạo API key của Goong theo hướng dẫn chi tiết tại đây.
URL: https://rsapi.goong.io/v2/geocode
Phương thức: GET
Chuyển đổi từ địa chỉ sang tọa độ Forward Geocode
Định nghĩa
Forward Geocode là quá trình chuyển đổi một địa chỉ cụ thể thành tọa độ địa lý (vĩ độ và kinh độ). Khi bạn nhập một địa chỉ vào hệ thống, dịch vụ Geocode sẽ tìm kiếm và trả về các tọa độ tương ứng với địa chỉ đó.
Cách thức hoạt động của Forward geocode
Khi bạn nhập một địa chỉ, hệ thống sẽ thực hiện quá trình chuyển đổi thông tin văn bản đó thành các tọa độ địa lý (vĩ độ, kinh độ) trên bản đồ. Quá trình này bao gồm:
- Chuẩn hóa dữ liệu: Hệ thống sẽ làm sạch dữ liệu đầu vào, loại bỏ các từ thừa và sắp xếp thông tin địa chỉ theo một cấu trúc nhất định.
- Tìm kiếm trong cơ sở dữ liệu: Hệ thống sẽ so sánh địa chỉ đã chuẩn hóa với các thông tin địa lý có sẵn trong cơ sở dữ liệu của mình.
- Trả về kết quả: Khi tìm thấy kết quả phù hợp, hệ thống sẽ trả về các tọa độ địa lý tương ứng cùng với các thông tin bổ sung như tên đường, quận, huyện…
Cách thức tạo một yêu cầu Forward geocode
Thông số bắt buộc
- address – Địa chỉ muốn lấy tọa độ.
Tham số về request truyền vào:
curl 'https://rsapi.goong.io/v2/geocode?address=Chí%20Linh%2C%20Hải%20Dương&administrative_unit=old&api_key={YOUR_API_KEY}'
Tham số | Mô tả | Ví dụ |
address | Địa chỉ cần chuyển đổi sang tọa độ và place_id. Có thể là tên đường, số nhà, phường, quận. | Phường Cộng Hòa, TP. Chí Linh, Hải Dương |
api_key | Khóa API cá nhân của bạn dùng để xác thực. | AbC1234xyzXYZ |
administrative_unit | Đây là tham số không bắt buộc. Để mặc định hoặc administrative_unit= new sẽ trả về kết quả là đơn vị hành chính mới sau khi đã sáp nhập. Thêm tham số administrative_unit=old sẽ trả về kết quả đơn vị hành chính cũ trước khi sáp nhập. | new |
Tham số trong response trả về:
Tham số | Mô tả | Ví dụ |
plus_code | Plus Code là một mã địa chỉ toàn cầu giúp xác định vị trí chính xác của một địa điểm, đặc biệt hữu ích trong khu vực không có địa chỉ chính thức. Bao gồm: – compound_code: Mã + địa danh – global_code: Mã toàn cầu |
"compound_code": "+WPK6 TP. Chí Linh, Hải Dương" "global_code": "8WF3+WPK6" |
type | Mảng các loại địa điểm mà kết quả phản ánh. Dùng để phân loại đối tượng như địa chỉ, doanh nghiệp, điểm mốc… | [“house_number”] |
reference | Mã tham chiếu nội bộ, dùng để truy vấn hoặc kiểm tra lại địa điểm trong hệ thống. |
"poiuyTREWqazx09876MNB==.bm9ybWFs" |
formatted_address | Địa chỉ đã được chuẩn hóa, hiển thị dưới dạng dễ đọc, đầy đủ các cấp hành chính. Dùng để hiển thị cho người dùng cuối. | “THPT Chí Linh, P. Sao Đỏ, TP. Chí Linh, Hải Dương” |
address_components | Mảng các thành phần địa chỉ riêng lẻ: số nhà, tên đường, phường/xã, quận/huyện, tỉnh/thành. Mỗi phần gồm long_name (đầy đủ) và short_name (rút gọn). |
{ "long_name": "Trường THPT Chí Linh", "short_name": "THPT Chí Linh" }, { "long_name": "Phường Sao Đỏ", "short_name": "P. Sao Đỏ" }, { "long_name": "TP. Chí Linh", "short_name": "TP. Chí Linh" }, { "long_name": "Hải Dương", "short_name": "Hải Dương" } , |
place_id | Mã định danh duy nhất cho một địa điểm trong hệ thống bản đồ, dùng để tham chiếu nhanh, lưu cache, hoặc tìm chi tiết thông tin khác về địa điểm đó. |
"CRdosr1ubzGqZwEhsJV2xKkCmeNrXbNmYY_3IMQoaBxeuLQhZq YnZDX92dmu1_EUr.." |
geometry | Thông tin định vị địa lý, bao gồm: – location: Tọa độ (vĩ độ, kinh độ) – boundary: (không bắt buộc) đường viền đối tượng dạng polyline nén |
{ "location": { "lat": 21.122311, "lng": 106.405901 } }, |
Chuyển đổi từ tọa độ sang địa chỉ Reverse Geocode
Định nghĩa
Reverse Geocode là quá trình chuyển đổi từ tọa độ (vĩ độ và kinh độ) thành địa chỉ cụ thể hoặc các thông tin mô tả vị trí như tên đường, thành phố, quốc gia. Dịch vụ này thường được sử dụng trong nhiều trường hợp khi có tọa độ của một vị trí nhất định, nhưng cần tìm hiểu địa chỉ hoặc thông tin cụ thể về địa điểm đó.
Cách thức hoạt động của Reverse geocode
Khác với Forward geocode, Reverse geocode thực hiện quá trình chuyển đổi ngược lại: từ một cặp tọa độ địa lý (vĩ độ, kinh độ) thành một địa chỉ cụ thể. Khi bạn cung cấp một vị trí (kinh độ, vĩ độ), hệ thống sẽ tìm kiếm trong cơ sở dữ liệu địa lý để xác định địa chỉ gần nhất với vị trí đó. Kết quả trả về có thể bao gồm số nhà, tên đường, thành phố và các thông tin chi tiết khác.
Cách thức tạo yêu cầu Reverse geocode
Thông số bắt buộc
- latlng: Tọa độ điểm cần lấy thông tin.
Tham số trong request truyền vào:
curl 'https://rsapi.goong.io/v2/geocode?latlng=21.120678,106.397301&administrative_unit=old&api_key={YOUR_API_KEY}'
Tham số | Mô tả | Ví dụ |
latlng | Tọa độ địa điểm cần truy vấn, gồm lat,long | 21.120678,106.397301 |
administrative_unit | Đây là tham số không bắt buộc. Để mặc định hoặc administrative_unit= new sẽ trả về kết quả là đơn vị hành chính mới sau khi đã sáp nhập. Thêm tham số administrative_unit=old sẽ trả về kết quả đơn vị hành chính cũ trước khi sáp nhập. | administrative_unit=old |
api_key | Mã khóa API của bạn để xác thực với hệ thống | API key của bạn |
Tham số trong response trả về:
Tên tham số | Mô tả chi tiết | Ví dụ |
results | Mảng chứa các kết quả địa điểm phù hợp với tọa độ hoặc truy vấn đầu vào. Mỗi phần tử trong mảng là thông tin chi tiết của một địa điểm. |
"results": [ { "address_components": [ { "long_name": "13 Cao Đường", "short_name": "13 Cao Đường" }, { "long_name": "Phả Lại", "short_name": "Phả Lại" }, |
address_components | Danh sách các thành phần tạo nên địa chỉ, từ chi tiết nhỏ nhất (số nhà, đường) đến cấp hành chính lớn hơn (phường, quận, tỉnh). | [“13 Cao Đường”, “Phả Lại”, “Chí Linh”, “Hải Dương”] |
formatted_address | Địa chỉ đầy đủ, đã được định dạng rõ ràng và sắp xếp theo thứ tự từ nhỏ đến lớn. Thường dùng để hiển thị cho người dùng cuối. | “13 Cao Đường, Phả Lại, Chí Linh, Hải Dương” |
location.lat | Vĩ độ (latitude) của địa điểm – tọa độ theo hướng Bắc – Nam. | 211.261.148 |
location.lng | Kinh độ (longitude) của địa điểm – tọa độ theo hướng Đông – Tây. | 106.3067514 |
boundary | Đa giác (polygon) biểu diễn ranh giới hành chính hoặc khu vực địa lý của địa điểm. Nếu không có, sẽ là null. | null |
place_id | Mã định danh duy nhất cho địa điểm. Dùng để tham chiếu hoặc tìm kiếm lại địa điểm trong các API khác. |
"po1KuRmVaqPty0IZpnBurm2VeE6lf6yTWaxaN6Vu..." |
reference | Trường tham chiếu địa điểm, thường trùng với place_id. Giữ lại để tương thích với phiên bản cũ. | |
compound_code | Mã định vị địa phương dạng Plus Code (mã mở), cho phép xác định vị trí chính xác trong khu vực hành chính. | “+BMKDMI Phả Lại, Chí Linh, Hải Dương” |
global_code | Mã định vị toàn cầu dạng Plus Code. Dùng trong các hệ thống không cần địa chỉ hành chính. | “MXUP+BMKDMI” |
province | Tên tỉnh/thành phố nơi địa điểm tọa lạc. Dữ liệu này đã được cập nhật theo đơn vị hành chính mới nhất. | “Hải Dương” |
district | Tên quận/huyện hoặc thành phố cấp huyện. | “Chí Linh” |
commune | Tên phường/xã/thị trấn. | “Phả Lại” |
types | Danh sách loại địa điểm theo phân loại hệ thống (nếu có), ví dụ: route, house_number, locality,… Có thể rỗng nếu không xác định. | [] |
name | Tên chính của địa điểm hoặc phần mô tả ngắn gọn, ví dụ: tên cửa hàng, số nhà, địa danh. | “13 Cao Đường” |
address | Địa chỉ hành chính không bao gồm tên cụ thể hay số nhà, thường là cụm “xã/phường, huyện/quận, tỉnh/thành”. | “Phả Lại, Chí Linh, Hải Dương” |
status | Trạng thái phản hồi của API. “OK” nghĩa là thành công, “INVALID_REQUEST” là sai định dạng truy vấn… | “OK” |
Mục lục