Roads API zwraca podany limit prędkości dla danego segmentu drogi. W przypadku segmentów drogi ze zmiennymi ograniczeniami prędkości zwracany jest domyślny limit prędkości.
Nie można zagwarantować dokładności danych o ograniczeniu prędkości zwracanych przez interfejs Roads API. Podane limity prędkości nie są aktualizowane w czasie rzeczywistym i mogą być szacowane, niedokładne, niepełne lub nieaktualne. Sprawdź szczegóły zasięgu, aby zobaczyć regiony, w których dostępne są dane o ograniczeniach prędkości.
Żądania
Żądanie ograniczenia prędkości musi być wysyłane przez HTTPS i mieć taką formę:
https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY
Wykorzystanie parametrów
Parametry wymagane
- Parametr
path
lubplaceId
.path
– lista maksymalnie 100 pól szerokości i długości geograficznej reprezentujących ścieżkę. Długość i szerokość geograficzna muszą być rozdzielone przecinkami. Pary szerokości i długości geograficznej muszą być rozdzielone pionową kreską „|”. Gdy podajesz parametrpath
, interfejs API najpierw pobiera ścieżkę do drogi, którą pokonuje pojazd (tak jak w przypadku żądaniasnapToRoads
), a następnie ustala limit prędkości dla odpowiedniego segmentu drogi. Jeśli nie chcesz, aby interfejs API rejestrował ścieżkę, musisz przekazać parametrplaceId
w sposób opisany poniżej. Poniższy przykład pokazuje parametrpath
z 3 parami szerokości i długości geograficznej:path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796
.placeId
– identyfikatory miejsc reprezentujące co najmniej 1 segment drogi. Upewnij się, że każdy identyfikator miejsca odnosi się do segmentu drogi, a nie do innego typu miejsca. W każdym żądaniu możesz przekazać maksymalnie 100 identyfikatorów miejsc. Interfejs API nie sprawdza się przy dostarczaniu identyfikatorów miejsc. Odpowiedź zawiera ograniczenie prędkości dla każdego identyfikatora miejsca w żądaniu. Możesz wysłać żądaniesnapToRoads
lubnearestRoads
, aby znaleźć odpowiednie identyfikatory miejsc, a następnie podać je jako dane wejściowe do żądaniaspeedLimits
. Poniższy przykład pokazuje parametrplaceId
z 2 identyfikatorami miejsc:placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
key
– klucz interfejsu API aplikacji. Aplikacja musi identyfikować się za każdym razem, gdy wysyła żądanie do komponentu Roads API, do każdego żądania dołączając klucz interfejsu API. Dowiedz się, jak uzyskać klucz.
Parametry opcjonalne
units
– określa, czy obowiązują ograniczenia prędkości w kilometrach lub milach na godzinę. Wartość parametru możesz ustawić naKPH
lubMPH
. Domyślna wartość toKPH
.
Odpowiedzi
W odpowiedzi speedLimits
mogą występować te elementy:
speedLimits
– tablica metadanych drogi. Każdy element składa się z tych pól:placeId
– unikalny identyfikator miejsca, Wszystkie identyfikatory miejsc zwracane przez funkcję Roads API będą odpowiadać segmentom drogi.speedLimit
– ograniczenie prędkości w danym segmencie drogi.units
– zwraca alboKPH
, alboMPH
.
snappedPoints
– tablica przyciągniętych punktów. Ta tablica występuje tylko wtedy, gdy żądanie zawiera parametrpath
. Każdy punkt składa się z następujących pól:location
– zawiera wartościlatitude
ilongitude
.originalIndex
– liczba całkowita wskazująca odpowiadającą jej wartość w pierwotnym żądaniu. Każda wartość w żądaniu powinna być zmapowana na udzieloną wartość w odpowiedzi. Te wartości są indeksowane z0
, więc punkt zoriginalIndex
o wartości4
będzie przypiętą wartością 5. szerokości i długości geograficznej przekazanej do parametrupath
.placeId
– unikalny identyfikator miejsca, Wszystkie identyfikatory miejsc zwracane przez funkcję Roads API będą odpowiadać segmentom drogi. Aby określić limit prędkości na danym fragmencie drogi, obiektplaceId
może być przekazywany w żądaniu ograniczenia prędkości.
warning_message
– ciąg zawierający ostrzeżenie widoczne dla użytkowników;
Przykładowe żądanie ze ścieżką
Żądanie to otrzymuje informację o limicie prędkości dla każdego segmentu drogi znajdującego się najbliżej określonych par szerokości i długości geograficznej na ścieżce przekraczającej most Vasco da Gama w Lizbonie.
Wyślij prośbę
https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY
Odpowiedź
{ 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." }
Zwróć uwagę na komunikat ostrzegawczy dotyczący niewielu punktów w odpowiedzi powyżej. Jeśli zgłaszasz żądanie ograniczenia prędkości w najbliższych fragmentach drogi w dowolnym miejscu, musisz wywołać speedLimits
za pomocą identyfikatorów miejsc pobranych z punktu końcowego nearestRoads
.
Przykładowe żądanie z wykorzystaniem identyfikatorów miejsc
Zamiast używać par szerokości i długości geograficznej, możesz przekazywać identyfikatory miejsc segmentów drogi. Zalecamy uzyskiwanie identyfikatorów miejsc dla segmentów drogi przy użyciu żądań snapToRoads
lub nearestRoads
. Po przekazaniu identyfikatorów miejsc interfejs API zwraca ograniczenie prędkości dla segmentu drogi reprezentowanego przez każdy identyfikator miejsca. Do przekazywanych identyfikatorów miejsc nie jest stosowany żaden interfejs API do ustalania lokalizacji.
W poniższym przykładzie zażądano ograniczenia prędkości w niektórych fragmentach drogi łączących most Vasco da Gama w Lizbonie.
Wyślij prośbę
https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY
Odpowiedź
{ "speedLimits": [ { placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE", speedLimit: 105, units: "KPH" }, { placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU", speedLimit: 70, units: "KPH" }, { placeId: "ChIJJ4vQRudkJA0RpednU70A-5M", speedLimit: 55, units: "KPH" } ] }
Zalecenia dotyczące wykorzystania
Aby zminimalizować liczbę wywołań funkcji Ograniczenie prędkości, zalecamy próbkowanie lokalizacji zasobów w 5–15-minutowych przedziałach (dokładna wartość zależy od szybkości poruszania się zasobu). Jeśli zasób ma charakter statyczny, wystarczy jedna próbka lokalizacji (nie ma potrzeby wykonywania wielu wywołań).
Aby zminimalizować ogólny czas oczekiwania, zalecamy wywoływanie usługi Speed Limit po zebraniu danych, a nie wywoływanie interfejsu API po każdym otrzymaniu lokalizacji zasobu mobilnego.
Dlaczego brakuje niektórych lub wszystkich ograniczeń prędkości?
Najczęstszą przyczyną braku wartości speedLimits
jest prośba o ograniczenie prędkości w miejscu, które nie jest fragmentem drogi.
W powyższym przykładzie ilustruje koncepcję mostu Vasco da Gama. Most obsługuje drogę E90 nad Rio Tejo. Sam most ma identyfikator miejsca ChIJUzt97ZEwGQ0RM1JzQfqoDtU. Pierwszy fragment drogi w powyższej odpowiedzi jest częścią drogi E90 i ma identyfikator miejsca ChIJX12duJAwGQ0Ra0d4Oi4jOGE. Jeśli w przykładowym żądaniu zastąpisz identyfikator miejsca drogi identyfikatorem miejsca mostu, w odpowiedzi w tablicy speedLimits
pojawią się tylko 2 ograniczenia prędkości, ponieważ identyfikator miejsca mostu nie odnosi się do pojedynczego segmentu drogi. Jeśli żaden z identyfikatorów miejsc nie dotyczy segmentów drogi, odpowiedź nie będzie zawierać żadnych limitów prędkości.
Przesyłając żądania ograniczenia prędkości za pomocą identyfikatorów miejsc, upewnij się, że każdy identyfikator miejsca odnosi się do segmentu drogi, a nie do innego typu miejsca. Identyfikatory miejsc dla poszczególnych segmentów drogi najlepiej pobierać za pomocą żądań snapToRoads
lub nearestRoads
. Każde z nich może zwracać wiele identyfikatorów miejsc z jednego wywołania.