География работы сервиса
Отображение карты работы сервиса
Карта работы сервиса Юрент показывает пользователю в каких границах можно кататься в городе, где существуют ограничения скорости или поездки запрещены вовсе, а также где можно завершать аренду.
Этот функционал не является минимально необходимым для аренды. Пользователи смогут арендовать самокат, который они просто встретят на улице, с помощью ввода номера транспорта, расположенного на руле. Однако, карта существенно повышает комфорт и прозрачность работы сервиса, что снижает количество обращений в поддержку.
Например, если во время поездки самокат внезапно начнет ехать медленно, то карта подскажет пользователю, что здесь расположена зона ограничения скорости. Без этой информации пользователь может подумать, что самокат сломался.
Чтобы отобразить карту работы сервиса в каком-то городе, необходимо:
- Получить список доступных зон аренды
- Определить в какой зоне аренды находится пользователь и понять какому городу она принадлежит (получить название города)
- Используя запрос списка доступных городов, по названию определить ID города
- Используя ID города, получить список зон ограничений и парковок в городе

Обратите внимание, что родительскими элементами для Парковок, Зон ограничения скорости и Запрета поездок является Город. В то время, как родительским элементом для доступных самокатов является Зона аренды внутри Города.
Также, при разработке интерфейса, следует учитывать что карта отображается по-разному на различных масштабах. На большом отдалении карты нет смысла отображать зоны использования, парковки и другие локации внутри всех городов. Также и на среднем и малом отдалении нет смысла отображать крупные локации (города и страны).

Давайте подробнее рассмотрим каждую локацию в отдельности. На карте сервиса содержатся следующие виды локаций:
| Описание | Является полигоном? | Поведение самоката и аренды | Запрос | |
|---|---|---|---|---|
| Страна | Регионы мира в которых работает сервис. Для агентов доступен свой список стран для работы. |
Нет | {шлюз}/api/v1/Location/countries | |
| Город | Города внутри страны, в которых работает сервис. Для агентов доступен свой список городов для работы. |
Нет | {шлюз}/api/v1/Location/areas/allcities | |
| Зона аренды | Территории в рамках одного города, где можно ездить на самокатах. У одного города может быть несколько зон аренды. |
Да | При выезде за зону аренды самокат замедляется до 5 км/ч и начинает пищать. Пользователь не сможет завершить аренду за зоной аренды. Также, пользователи не смогут начать аренду самоката, находящегося за зоной аренды. Завершать аренду пользователи могут внутри парковок и парковочных зон, находящихся внутри зоны аренды. |
{шлюз}/api/v1/Location/areas/rent |
| Зона снижения скорости (lowspeed) | Территории города, где установлено ограничение скорости. Например, в каком-нибудь парке не больше 15 км/ч. |
Да | При въезде в зону аренды самокат замедляется до скорости, указанной в настройках этой зоны (на стороне Юрент) | {шлюз}/api/v2/Location/generalbycity/{cityId} |
| Зона запрета поездок | Территории города, где нельзя ездить на самокатах. Например, на Красной Площади ездить нельзя. |
Да | При въезде в эту зону самокат замедляется до 5 км/ч и начинает пищать. | {шлюз}/api/v2/Location/generalbycity/{cityId} |
| Зона запрета парковки | Территории города, где можно ездить на самокатах, но нельзя завершать аренду. Например, на набережных часто можно кататься, но оставить самокат не получится. |
Да | При попытке завершить аренду в этой зоне, интерфейс приложения сообщит пользователю что в этой зоне завершить аренду не получится. | {шлюз}/api/v2/Location/generalbycity/{cityId} |
| Зона парковки | Территории города, где можно завершать аренду в любом месте (т.н. фри-флот) | Да | При попытке завершить аренду в этой зоне — пользователь сможет это сделать без каких-либо ограничений. | {шлюз}/api/v2/Location/generalbycity/{cityId} |
| Парковка (круглая) | Место, в определенном радиусе от которого, можно завершать аренду. | Нет | При попытке завершить аренду внутри радиуса этой парковки, система разрешит пользователю это сделать. При нахождении вне радиуса парковки — завершить аренду не получится. | {шлюз}/api/v2/Location/generalbycity/{cityId} |
Получение зон аренды
Зона аренды — территория города, внутри которой можно кататься на самокатах, начинать и завершать аренду (на парковках). ID зоны аренды потребуется для того, чтобы получить список доступных к аренде самокатов.
Для получения списка зон аренды отправляем запрос: {шлюз}/api/v1/Location/areas/rent
В ответе получаем список зон аренды:
"data": [
{
"id": "string",
"name": "string",
"center": {
"lat": 0,
"long": 0
},
"coordinates": [
{
"lat": 0,
"long": 0
}
],
"cityName": "string",
"countryCode": "string"
}
]
Получение городов
Для каждого агента доступен собственный список городов (настраивается на стороне Юрент). ID города потребуется для того чтобы получить зоны ограничений и парковок в нем.
Для получения списка доступных стран отправляем запрос: {шлюз}/api/v1/Location/areas/allcities
В ответе получаем список доступных городов:
"data": [
{
"id": "string",
"name": "string",
"countryCode": "string"
}
Получение зон ограничений и парковок
Зоны ограничения скорости, зоны запрета поездок, зоны запрета парковок и зоны парковок показывают клиенту где в городе установлены ограничения на поездки на самокатах, а также где можно завершать аренду. Подробнее о видах этих зон рассказано здесь.
Для получения списка зон отправляем запрос: {шлюз}/api/v2/Location/generalbycity/{cityId}
Обратите внимание, что в параметрах запроса используется {cityId} из запроса на получение доступных городов
В ответе получаем список зон:
"additionalProp1": {
"lowSpeedZones": [ // Зона снижения скорости
...
],
"parkings": [ // Зоны парковки
...
],
"circleParkings": [ // Парковки (круглые)
...
],
"restrictedZones": [ // Зоны запрета парковок
...
],
"notAllowedZones": [ // Зоны запрета поездок
...
]
},
Получение стран
Для каждого агента доступен собственный список стран (настраивается на стороне Юрент).
Для получения списка доступных стран отправляем запрос: {шлюз}/api/v1/Location/countries
В ответ получаем список доступных стран:
"entries": [
{
"name": "string",
"code": "string",
"culture": "string",
"countryCode": "string"
}