Вы также можете прочитать это здесь, на моем личном веб-сайте:
https://yildiz.dev/2017/05/20/react-native-maps-with-google-directions-api/
Мы должны использовать внешний сервис для рисования реальных направлений между двумя (или более) точками на карте. Для React Native я использовал как собственные карты реакции, так и Google Directions Api.
React Native Maps
Благодаря ребятам из airbnb у нас есть react-native-maps: полный набор компонентов React для карт. Вы можете проверить функции и подробности в репозитории Github:
Служба API Google Directions
Google предоставляет API маршрутов, который рассчитывает маршруты между местоположениями. Поскольку это служба на основе API, SDK для любой платформы не существует (по крайней мере, официально).
Перед началом кодирования
Ответ JSON
, возвращаемый Api Directions, содержит ключ с именем overview_polyline
, который представляет собой закодированную ломаную линию и выглядит следующим образом:
cxftF{xcpDEt@Kj@Gf@E`C@~@XtAJb@Jh@@J@D?F@HA\Ip@Ox@KZKh@?PAB@D?H?B@F@B?F@@@DBBBD@@B@@@B@D@B@D?L@v@FFBXDpFxA|@l@^d@z@~BVz@Nf@Ph@DNFLLXVZxArAh@b@l@d@r@l@pAzAl@z@PXBF@FBD@F@F?H?D@JCLCHA@A@A@A@C@IBQBKAYIWSMKKMGKOOMIo@D]FSBi@JSDUAs@Qm@WcBk@s@U[K_@Sq@e@OUMWKQMUKMIGMGICC?E?K?E@QHUNm@Xq@XYLa@Ls@LYDW@SDGBG@IHS\Wl@EFA@A@CDEDEBG@C@[?e@Ca@KQGa@QSC_@?Y@k@Fu@As@?U@I@I@IBEBQH]Lq@\WLuBx@i@Vy@TaANK@E@QAICUKIGMM]e@OWISEOCSAMAG
Это данные, которые мы собираемся использовать для создания нашего маршрута на карте. Но сначала нам нужно его расшифровать. Есть небольшая библиотека от команды MapBox под названием Polyline:
Мы можем использовать эту библиотеку для кодирования / декодирования ломаных линий.
Пример приложения
Создайте новое собственное приложение React:
$ react-native init RnDirectionsApp
Внутри папки RnDirectionsApp
установите react-native-maps
и polyline
:
$ npm install react-native-maps @mapbox/polyline --save $ react-native link
Вы можете найти более подробное руководство по установке здесь, в Github Repo.
Теперь у нас есть пустое, но готовое приложение, ориентированное на реагирование. Давайте сначала посмотрим на наш getDirections
метод:
Просто этот метод:
- Получает данные маршрутов из Google (
line 4
) - Декодирует закодированные данные ломаной линии (
line 6
) - Преобразует декодированные данные ломаной линии в список объектов (
line 7
) - Обновляет
state
новымиcoords
данными
Теперь мы можем нарисовать наш маршрут на карте. Для этого мы можем использовать MapView.Polyline
из react-native-maps. В нашем render
методе:
Более подробную информацию об использовании Mapview.Polyline
вы можете найти здесь.
А это полная версия index.ios.js
:
Надеюсь это поможет. Пожалуйста, оставьте комментарий для любого отзыва
ОБНОВЛЕНИЕ: Брэм Ван Дамм создал компонент на основе этого сообщения. Выглядит многообещающе. Вы можете проверить это здесь: