Yêu cầu và phản hồi mã hóa địa lý ngược (tra cứu địa chỉ)

Thuật ngữ mã hoá địa lý thường đề cập đến việc dịch dữ liệu mà con người có thể đọc được vào một vị trí trên bản đồ. Trong quá trình làm ngược lại, dịch một vị trí trên bản đồ thành một địa chỉ con người có thể đọc được, được gọi là ngược mã hoá địa lý.

Đảo ngược yêu cầu mã hoá địa lý

Thông số bắt buộc

  • latlng — Vĩ độ và kinh độ xác định vị trí mà bạn muốn gần nhất, địa chỉ mà con người có thể đọc được.
  • key — Khoá API cho ứng dụng của bạn. Khoá này xác định ứng dụng của bạn cho mục đích quản lý hạn mức. Tìm hiểu cách lấy khoá.

Thông số tùy chọn

Đây là những tham số không bắt buộc mà bạn có thể đưa vào ngược lại. yêu cầu mã hoá địa lý:

  • language – Ngôn ngữ mà hệ thống sử dụng để trả về kết quả.
    • Xem danh sách các tiện ích được hỗ trợ ngôn ngữ. Google thường cập nhật các ngôn ngữ được hỗ trợ, vì vậy, có thể chưa đầy đủ.
    • Nếu language không được cung cấp, bộ mã hoá địa lý sẽ cố gắng sử dụng ngôn ngữ ưu tiên như được chỉ định trong Accept-Language hoặc ngôn ngữ bản địa của miền mà yêu cầu được gửi đi.
    • Bộ mã hoá địa lý cố gắng hết sức để cung cấp địa chỉ đường phố dễ đọc cho cả người dùng và cục bộ. Để đạt được mục tiêu đó, trả về địa chỉ đường phố theo ngôn ngữ địa phương, được chuyển tự thành tập lệnh mà người dùng có thể đọc được nếu cần, quan sát các ngôn ngữ. Tất cả các địa chỉ khác được trả về trong phương thức ưu tiên ngôn ngữ. Tất cả các thành phần địa chỉ đều được trả về bằng cùng một ngôn ngữ, (được chọn từ thành phần đầu tiên).
    • Nếu tên không có sẵn bằng ngôn ngữ ưu tiên, bộ mã hoá địa lý sử dụng kết quả phù hợp nhất.
  • region – Mã vùng, được chỉ định dưới dạng ccTLD ("tên miền cấp cao nhất") gồm hai ký tự. Tham số này cũng có thể ảnh hưởng đến kết quả dựa trên luật hiện hành.
  • result_type — Bộ lọc gồm một hoặc nhiều loại địa chỉ, được phân tách bằng dấu gạch đứng (|). Nếu tham số này chứa nhiều loại địa chỉ, API sẽ trả về tất cả địa chỉ khớp với bất kỳ loại nào trong số các loại đó. Lưu ý về việc xử lý: Tham số result_type không hạn chế tìm kiếm theo(các) loại địa chỉ được chỉ định. Thay vào đó, result_type đóng vai trò là bộ lọc sau khi tìm kiếm: API tìm nạp tất cả kết quả cho latlng chỉ định, sau đó loại bỏ các kết quả đó không khớp với(các) loại địa chỉ được chỉ định. Các giá trị sau đây là được hỗ trợ:
    • street_address cho biết địa chỉ đường phố chính xác.
    • route cho biết một tuyến đường có tên (chẳng hạn như "US 101").
    • intersection biểu thị giao lộ chính, thường là hai các con đường chính.
    • political cho biết một pháp nhân chính trị. Thông thường, loại này biểu thị một đa giác của một số hành chính dân sự.
    • country cho biết pháp nhân chính trị quốc gia và là thường là loại đơn đặt hàng cao nhất mà Bộ mã hoá địa lý trả về.
    • administrative_area_level_1 biểu thị một dân sự bậc nhất pháp nhân dưới cấp quốc gia. Tại Hoa Kỳ, những chỉ số này cấp hành chính là các tiểu bang. Không phải quốc gia nào cũng có các triển lãm này cấp hành chính. Trong hầu hết các trường hợp, Administrative_area_level_1 tên ngắn sẽ phù hợp với các phân mục ISO 3166-2 và các phân mục khác danh sách lưu hành; tuy nhiên, điều này không được đảm bảo vì kết quả mã hóa địa lý của chúng tôi dựa trên nhiều tín hiệu và dữ liệu vị trí.
    • administrative_area_level_2 biểu thị một dân sự bậc hai pháp nhân dưới cấp quốc gia. Tại Hoa Kỳ, những chỉ số này cấp hành chính là các hạt. Không phải quốc gia nào cũng có các triển lãm này cấp hành chính.
    • administrative_area_level_3 biểu thị một dân sự bậc ba pháp nhân dưới cấp quốc gia. Loại này biểu thị một phân cấp dân sự nhỏ. Không phải quốc gia nào cũng thể hiện các cấp hành chính này.
    • administrative_area_level_4 biểu thị một dân sự bậc 4 pháp nhân dưới cấp quốc gia. Loại này biểu thị một phân cấp dân sự nhỏ. Không phải quốc gia nào cũng thể hiện các cấp hành chính này.
    • administrative_area_level_5 biểu thị dân sự bậc 5 pháp nhân dưới cấp quốc gia. Loại này biểu thị một phân cấp dân sự nhỏ. Không phải quốc gia nào cũng thể hiện các cấp hành chính này.
    • administrative_area_level_6 biểu thị một dân sự bậc 6 pháp nhân dưới cấp quốc gia. Loại này biểu thị một phân cấp dân sự nhỏ. Không phải quốc gia nào cũng thể hiện các cấp hành chính này.
    • administrative_area_level_7 biểu thị một dân sự bậc 7 pháp nhân dưới cấp quốc gia. Loại này biểu thị một phân cấp dân sự nhỏ. Không phải quốc gia nào cũng thể hiện các cấp hành chính này.
    • colloquial_area cho biết một tên thay thế thường dùng cho thực thể.
    • locality cho biết một thành phố hoặc thị trấn chính trị đã được hợp nhất thực thể.
    • sublocality cho biết pháp nhân dân sự bậc 1 thuộc cấp dưới địa phương. Đối với một số vị trí, bạn có thể nhận được một trong những loại bổ sung: sublocality_level_1 thành sublocality_level_5. Mỗi cấp quận/huyện là một pháp nhân dân sự. Số lớn hơn biểu thị khu vực địa lý.
    • neighborhood biểu thị vùng lân cận được đặt tên
    • premise cho biết vị trí được đặt tên, thường là một toà nhà hoặc bộ sưu tập các toà nhà có tên phổ biến
    • subpremise cho biết thực thể đơn đặt hàng đầu tiên bên dưới một thực thể có tên một vị trí, thường là một toà nhà đơn lẻ trong một tập hợp các toà nhà có một tên thường gọi
    • plus_code cho biết tham chiếu vị trí được mã hoá, dẫn xuất so với vĩ độ và kinh độ. Plus code có thể được dùng để thay thế cho địa chỉ đường phố ở nơi không tồn tại (nơi toà nhà không được đánh số hoặc đường phố không được đặt tên). Xem https://plus.codes để biết thông tin chi tiết.
    • postal_code cho biết mã bưu chính dùng để xử lý địa chỉ bưu chính thư trong quốc gia.
    • natural_feature biểu thị một đối tượng tự nhiên nổi bật.
    • airport cho biết một sân bay.
    • park biểu thị một công viên có tên.
    • point_of_interest cho biết một địa điểm yêu thích đã được đặt tên. Thông thường, những "POI" này là thực thể cục bộ nổi bật không dễ dàng phù hợp trong một danh mục khác, chẳng hạn như "Toà nhà Empire State" hoặc "Tháp Eiffel".
  • location_type – Bộ lọc gồm một hoặc nhiều loại vị trí, được phân tách bằng dấu gạch đứng (|). Nếu tham số này chứa nhiều vị trí, API sẽ trả về tất cả địa chỉ khớp với bất kỳ loại nào. Lưu ý về việc xử lý: Tham số location_type không hạn chế tìm kiếm ở các loại vị trí được chỉ định. Thay vào đó, location_type đóng vai trò là bộ lọc sau khi tìm kiếm: API tìm nạp tất cả kết quả cho latlng chỉ định, sau đó loại bỏ các kết quả đó không khớp với loại vị trí được chỉ định. Các giá trị sau được hỗ trợ:
    • "ROOFTOP" chỉ trả về địa chỉ mà Google có thông tin vị trí chính xác đến độ chính xác của địa chỉ đường phố.
    • "RANGE_INTERPOLATED" chỉ trả về các địa chỉ phản ánh một giá trị gần đúng (thường trên đường) được nội suy giữa hai các điểm chính xác (chẳng hạn như giao lộ). Dải ô nội suy thường cho biết rằng mã địa lý trên mái nhà không có sẵn cho địa chỉ đường phố.
    • "GEOMETRIC_CENTER" chỉ trả về giá trị hình học tâm của một vị trí như hình nhiều đường (ví dụ: đường phố) hoặc đa giác (vùng).
    • "APPROXIMATE" chỉ trả về các địa chỉ được mô tả là gần đúng.
  • extra_computations – Sử dụng tham số này để chỉ định các tính năng bổ sung sau đây trong câu trả lời: Để bật nhiều tính năng trong số này cho cùng một yêu cầu API, hãy đưa vào tham số extra_computations trong yêu cầu cho mỗi tính năng. ví dụ:
    extra_computations=ADDRESS_DESCRIPTORS&extra_computations=BUILDING_AND_ENTRANCES

Nếu cả bộ lọc result_typelocation_type đều xuất hiện thì API chỉ trả về những kết quả phù hợp với cả result_typelocation_type giá trị. Nếu không có giá trị bộ lọc nào được chấp nhận, thì giá trị API trả về ZERO_RESULTS.

Ví dụ về mã hoá địa lý ngược

Truy vấn sau chứa giá trị vĩ độ/kinh độ của một vị trí tại Brooklyn:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

Truy vấn trên trả về kết quả sau:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "277",
               "short_name" : "277",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Bedford Avenue",
               "short_name" : "Bedford Ave",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Williamsburg",
               "short_name" : "Williamsburg",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Brooklyn",
               "short_name" : "Brooklyn",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "Kings",
               "short_name" : "Kings",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "11211",
               "short_name" : "11211",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
         "geometry" : {
            "location" : {
               "lat" : 40.714232,
               "lng" : -73.9612889
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7155809802915,
                  "lng" : -73.9599399197085
               },
               "southwest" : {
                  "lat" : 40.7128830197085,
                  "lng" : -73.96263788029151
               }
            }
         },
         "place_id" : "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
         "types" : [ "street_address" ]
      },

  ... Additional <code>results[]</code> ...

Lưu ý rằng bộ mã hoá địa lý đảo ngược trả về nhiều kết quả. Chiến lược phát hành đĩa đơn Kết quả của "formatted_address" không chỉ là địa chỉ bưu chính, mà còn bất kỳ cách nào để đặt tên theo vị trí địa lý. Ví dụ: khi mã hoá địa lý một điểm ở thành phố Chicago, điểm được mã hoá địa lý có thể được biểu thị thành địa chỉ đường phố, thành phố (Chicago), tiểu bang (Illinois) hoặc quốc gia (The United) Tiểu bang). Tất cả đều là "địa chỉ" đến bộ mã hoá địa lý. Bộ mã hoá địa lý đảo ngược trả về bất kỳ loại nào trong số này làm kết quả hợp lệ.

Bộ mã hoá địa lý đảo ngược khớp với các pháp nhân chính trị (quốc gia, tỉnh, thành phố và vùng lân cận), địa chỉ đường phố và mã bưu chính.

Danh sách đầy đủ các giá trị formatted_address được trả về bởi truy vấn trước đó được hiển thị bên dưới.

{
   "plus_code" : {
      "compound_code" : "P27Q+MCM New York, NY, USA",
      "global_code" : "87G8P27Q+MCM"
   },
   "results" : [
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "street_address" ]
      },
      {
         "formatted_address" : "279 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "premise" ]
      },
      {
         "formatted_address" : "277 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "establishment", "point_of_interest" ]
      },
      {
         "formatted_address" : "291-275 Bedford Ave, Brooklyn, NY 11211, USA",
         ...
         "types" : [ "route" ]
      },
      {
         "formatted_address" : "P27Q+MC New York, NY, USA",
         ...
         "types" : [ "plus_code" ]
      },
      {
         "formatted_address" : "South Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY 11211, USA",
         ...
         "types" : [ "postal_code" ]
      },
      {
         "formatted_address" : "Williamsburg, Brooklyn, NY, USA",
         ...
         "types" : [ "neighborhood", "political" ]
      },
      {
         "formatted_address" : "Kings County, Brooklyn, NY, USA",
         ...
         "types" : [ "administrative_area_level_2", "political" ]
      },
      {
         "formatted_address" : "Brooklyn, NY, USA",
         ...
         "types" : [ "political", "sublocality", "sublocality_level_1" ]
      },
      {
         "formatted_address" : "New York, NY, USA",
         ...
         "types" : [ "locality", "political" ]
      },
      {
         "formatted_address" : "New York, USA",
         ...
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "formatted_address" : "United States",
         ...
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}

API này trả về các loại địa chỉ khác nhau, từ các loại địa chỉ cụ thể nhất địa chỉ đường phố đến các tổ chức chính trị ít cụ thể hơn như vùng lân cận, thành phố, hạt và tiểu bang. Địa chỉ chính xác hơn thường kết quả nổi bật như trong trường hợp này. Nếu bạn muốn đối sánh một loại cụ thể hãy xem phần hạn chế dưới đây để biết cách hạn chế kết quả theo loại. Do đó, vị trí của các kết quả so với có thể khác nhau.

Đảo ngược mã hoá địa lý được lọc theo loại

Ví dụ sau đây lọc địa chỉ được trả về để chỉ bao gồm những địa chỉ đó có loại vị trí là ROOFTOP và loại địa chỉ street_address.

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY

Lưu ý: Những bộ lọc này chỉ hợp lệ đối với mã hoá địa lý ngược.

Đảo ngược phản hồi mã hoá địa lý

Định dạng của phản hồi mã hoá địa lý ngược giống như của phản hồi Mã hoá địa lý của bạn. Hãy xem mục Phản hồi mã hoá địa lý. Dưới đây là các mã trạng thái có thể có trong phản hồi mã hoá địa lý đảo ngược.

Đảo ngược mã trạng thái mã hoá địa lý

Trường "status" trong đối tượng phản hồi Mã hoá địa lý có chứa trạng thái của yêu cầu và có thể chứa thông tin gỡ lỗi để giúp bạn tìm ra lý do tại sao mã hoá địa lý ngược không hoạt động. "status" có thể chứa các giá trị sau:

  • "OK" cho biết không có lỗi nào xảy ra và có ít nhất một lỗi đã được trả lại.
  • "ZERO_RESULTS" cho biết mã hóa địa lý ngược là thành công nhưng không trả về kết quả nào. Điều này có thể xảy ra nếu bộ mã hoá địa lý đã truyền latlng ở một địa điểm từ xa.
  • "OVER_QUERY_LIMIT" cho biết bạn vượt quá hạn mức.
  • "REQUEST_DENIED" cho biết yêu cầu đã bị từ chối. Có thể là do yêu cầu có chứa result_type hoặc Tham số location_type nhưng không bao gồm khoá API.
  • "INVALID_REQUEST" thường biểu thị một trong những điều sau:
    • Truy vấn (address, components hoặc latlng).
    • result_type hoặc location_type không hợp lệ cũ là đã cho.
  • "UNKNOWN_ERROR" cho biết rằng yêu cầu không thể được xử lý do lỗi máy chủ. Yêu cầu có thể thành công nếu bạn hãy thử lại.

Đảo ngược mã cộng

Trường plus_code trong phản hồi Mã hoá địa lý có chứa mã cộng ước chừng chính xác nhất vĩ độ và kinh độ được truy vấn. Ngoài ra, trong hầu hết các trường hợp, mảng kết quả JSON sẽ chứa mã hoá địa lý đầy đủ kết quả có loại plus_code và một địa chỉ có chứa dấu cộng . Khoảng cách giữa mã cộng được giải mã và điểm yêu cầu là cao hơn 10 mét.