Giới hạn tốc độ

Roads API trả về giới hạn tốc độ được đăng cho một đoạn đường nhất định. Trong trường hợp các đoạn đường có giới hạn tốc độ thay đổi, giới hạn tốc độ mặc định cho đoạn đường sẽ được trả về.

Bạn không thể đảm bảo độ chính xác của dữ liệu giới hạn tốc độ do Roads API trả về. Dữ liệu giới hạn tốc độ được cung cấp không phải là dữ liệu theo thời gian thực và có thể là dữ liệu ước tính, không chính xác, chưa hoàn chỉnh hoặc lỗi thời. Xem thông tin chi tiết về phạm vi cung cấp để biết những khu vực có dữ liệu về giới hạn tốc độ.

Yêu cầu

Gửi yêu cầu về giới hạn tốc độ bằng HTTPS, theo biểu mẫu sau:

https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY

Mức sử dụng thông số

Tham số bắt buộc

  • Tham số path hoặc placeId.
    • path – Danh sách gồm tối đa 100 cặp vĩ độ/kinh độ biểu thị một đường dẫn. Bạn phải phân tách các giá trị vĩ độ và kinh độ bằng dấu phẩy. Các cặp vĩ độ/kinh độ phải được phân tách bằng ký tự dấu sổ dọc: "|". Khi bạn cung cấp tham số path, trước tiên, API sẽ điều chỉnh đường dẫn theo con đường mà xe có khả năng đi nhất (như đối với yêu cầu snapToRoads), sau đó xác định giới hạn tốc độ cho đoạn đường có liên quan. Nếu không muốn API điều chỉnh đường dẫn, bạn phải truyền tham số placeId như giải thích bên dưới. Ví dụ sau đây cho thấy tham số path có 3 cặp vĩ độ/kinh độ: path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796.
    • placeId – (Các) mã địa điểm đại diện cho một hoặc nhiều đoạn đường. Đảm bảo mỗi mã địa điểm đều đề cập đến một đoạn đường chứ không phải một loại địa điểm khác. Bạn có thể truyền tối đa 100 mã địa điểm cho mỗi yêu cầu. API này không thực hiện tính năng gắn kết với đường trên các mã địa điểm được cung cấp. Phản hồi này bao gồm giới hạn tốc độ cho từng mã địa điểm trong yêu cầu. Bạn có thể gửi yêu cầu snapToRoads hoặc nearestRoads để tìm mã địa điểm có liên quan, sau đó cung cấp các mã này làm dữ liệu đầu vào cho yêu cầu speedLimits. Ví dụ sau đây minh hoạ tham số placeId có 2 mã địa điểm: placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
  • key – Khoá API của ứng dụng. Ứng dụng của bạn phải xác định danh tính mỗi khi gửi yêu cầu đến Roads API bằng cách thêm một khoá API vào mỗi yêu cầu. Tìm hiểu cách lấy khoá.

Thông số không bắt buộc

  • units – Có trả về giới hạn tốc độ tính bằng km hay dặm/giờ hay không. Bạn có thể đặt giá trị này thành KPH hoặc MPH. Giá trị mặc định là KPH.

Phản hồi

Các phần tử sau đây có thể xuất hiện trong phản hồi speedLimits:

  • speedLimits – Một mảng siêu dữ liệu về đường. Mỗi phần tử bao gồm các trường sau:
    • placeId – Giá trị nhận dạng riêng biệt của một địa điểm. Tất cả mã địa điểm do Roads API trả về sẽ tương ứng với các đoạn đường.
    • speedLimit – Giới hạn tốc độ của đoạn đường đó.
    • units – Trả về KPH hoặc MPH.
  • snappedPoints – một mảng các điểm được điều chỉnh. Mảng này chỉ xuất hiện nếu yêu cầu chứa tham số path. Mỗi điểm bao gồm các trường sau:
    • location – chứa giá trị latitudelongitude.
    • originalIndex – Một số nguyên cho biết giá trị tương ứng trong yêu cầu ban đầu. Mỗi giá trị trong yêu cầu phải liên kết với một giá trị được điều chỉnh trong phản hồi. Các giá trị này được lập chỉ mục từ 0, vì vậy, một điểm có originalIndex4 sẽ là giá trị được điều chỉnh của vĩ độ/kinh độ thứ 5 được truyền đến tham số path.
    • placeId – Giá trị nhận dạng riêng biệt của một địa điểm. Tất cả mã địa điểm do Roads API trả về sẽ tương ứng với các đoạn đường. Bạn có thể truyền placeId trong yêu cầu về giới hạn tốc độ để xác định giới hạn tốc độ dọc theo đoạn đường đó.
  • warning_message – Một chuỗi chứa cảnh báo mà người dùng có thể thấy.

Ví dụ về yêu cầu sử dụng một đường dẫn

Yêu cầu này lấy giới hạn tốc độ cho từng đoạn đường gần nhất với các cặp vĩ độ/kinh độ được chỉ định trong một đường dẫn băng qua cầu Vasco da Gama ở Lisbon, Bồ Đào Nha.

Yêu cầu

https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY

Đáp

{
  speedLimits:
  [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ],
  snappedPoints:
  [
    {
      location:
      {
        latitude: 38.75807927603043,
        longitude: -9.037417546438084
      },
      originalIndex: 0,
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE"
    },
    {
      location:
      {
        latitude: 38.689653701836896,
        longitude: -9.177051486847693
      },
      originalIndex: 1,
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU"
    },
    {
      location:
      {
        latitude: 41.13993011767777,
        longitude: -8.609400794783655
      },
      originalIndex: 2,
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M"
    }
  ],
  warningMessage: "Input path is too sparse. You should provide a path where consecutive points are closer to each other. Refer to the 'path' parameter in Google Roads API documentation."
}

Hãy lưu ý thông báo cảnh báo về độ thưa thớt của điểm trong câu trả lời ở trên. Nếu đang yêu cầu giới hạn tốc độ cho các đoạn đường gần nhất tại các điểm tuỳ ý, bạn phải gọi speedLimits bằng mã địa điểm được truy xuất từ điểm cuối nearestRoads.

Ví dụ về yêu cầu sử dụng mã địa điểm

Thay vì sử dụng các cặp vĩ độ/kinh độ, bạn có thể truyền mã địa điểm của các đoạn đường. Bạn nên lấy mã địa điểm cho các đoạn đường bằng cách sử dụng các yêu cầu snapToRoads hoặc nearestRoads. Khi bạn truyền mã địa điểm, API sẽ trả về giới hạn tốc độ cho đoạn đường do mỗi mã địa điểm đại diện. API này không áp dụng bất kỳ tính năng khớp đường nào cho mã địa điểm được cung cấp.

Ví dụ sau đây yêu cầu giới hạn tốc độ cho một số đoạn đường băng qua cầu Vasco da Gama ở Lisbon, Bồ Đào Nha.

Yêu cầu

https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY

Đáp

{
  "speedLimits": [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ]
}

Đề xuất sử dụng

Để giảm thiểu số lượng cuộc gọi đến dịch vụ Giới hạn tốc độ, bạn nên lấy mẫu vị trí của các tài sản trong khoảng thời gian từ 5 đến 15 phút (giá trị chính xác phụ thuộc vào tốc độ di chuyển của tài sản). Nếu một thành phần là cố định, thì chỉ cần một mẫu vị trí (không cần thực hiện nhiều lệnh gọi).

Để giảm thiểu độ trễ tổng thể, bạn nên gọi dịch vụ Giới hạn tốc độ sau khi đã tích luỹ được một số dữ liệu, thay vì gọi API mỗi khi nhận được vị trí của một tài sản di động.

Tại sao một số/tất cả biển báo giới hạn tốc độ bị thiếu?

Nguyên nhân phổ biến nhất dẫn đến việc thiếu speedLimits là do yêu cầu giới hạn tốc độ của một địa điểm không phải là đoạn đường.

Ví dụ trên sử dụng cầu Vasco da Gama để minh hoạ các khái niệm; cầu này hỗ trợ đường E90 bắc qua Rio Tejo. Bản thân cây cầu này có mã địa điểm là ChIJUzt97ZEwGQ0RM1JzQfqoDtU. Đoạn đường đầu tiên trong phản hồi trên là một phần của đường E90 và có mã địa điểm là ChIJX12duJAwGQ0Ra0d4Oi4jOGE. Trong yêu cầu mẫu, nếu bạn thay thế mã nhận dạng địa điểm của đường bằng mã nhận dạng địa điểm của cầu, thì trong phản hồi sẽ chỉ có 2 giới hạn tốc độ trong mảng speedLimits vì mã nhận dạng địa điểm của cầu không đề cập đến một đoạn đường riêng lẻ. Hơn nữa, nếu không có mã địa điểm nào dành cho đoạn đường, thì phản hồi sẽ không chứa bất kỳ giới hạn tốc độ nào.

Khi đưa ra yêu cầu về giới hạn tốc độ bằng mã địa điểm, hãy đảm bảo rằng mỗi mã địa điểm đều đề cập đến một đoạn đường chứ không phải một loại địa điểm khác. Bạn nên truy xuất mã địa điểm cho từng đoạn đường riêng lẻ bằng cách sử dụng các yêu cầu snapToRoads hoặc nearestRoads. Mỗi yêu cầu này có thể trả về nhiều mã địa điểm từ một lệnh gọi duy nhất.