Рассчитать расстояние пройденного пути с помощью Google Maps API - PullRequest
0 голосов
/ 06 сентября 2018

Требуется отследить координаты пользователя, а в конце дня узнать километр водителя.

Что я делаю

Шаг 1. Запишите все координаты, которые получает устройство

Шаг 2: закодировать все координаты в строку в кодировке ломаной линии

Шаг 3. Использование API матрицы расстояний для расчета расстояния между источником и закодированной полилинией

Проблема в том, что, когда я получаю ответ от API матрицы расстояний, кажется, что он дает мне ответ источника и всех координат, закодированных в полилинии, что я не уверен, что он будет учитывать весь путь или нет.

Я пытался прочитать документацию, но это не помогло. У кого-нибудь раньше была похожая проблема?

// Получить кодированный путь и найти расстояние

let source      = coordinates.remove(at: 0)
let polyline    = Polyline.init(coordinates: coordinates)
let encodedPath = polyline.encodedPolyline
requestCalculateDistance(forSource: source, encodedPath: encodedPath)

// Ответ с расстояния Matrix API

rows =     (
                {
            elements =             (
                                {
                    distance =                     {
                        text = "0.1 km";
                        value = 135;
                    };
                    duration =                     {
                        text = "1 min";
                        value = 4;
                    };
                    status = OK;
                },
                                {
                    distance =                     {
                        text = "0.1 km";
                        value = 135;
                    };
                    duration =                     {
                        text = "1 min";
                        value = 4;
                    };
                    status = OK;
                })

1 Ответ

0 голосов
/ 06 сентября 2018

Я полагаю, что вы можете использовать Библиотеку геометрии API Google Maps JavaScript для решения вашей проблемы.

Как вы упомянули, вы собираете все координаты, которые образуют ломаную линию, поэтому у вас есть массив объектов LatLng. Чтобы рассчитать длину полилинии, вы можете использовать метод google.maps.geometry.spherical.computeLength(), который принимает Array<LatLng> или MVCArray<LatLng> в качестве первого параметра.

Ознакомьтесь с документацией для получения более подробной информации:

https://developers.google.com/maps/documentation/javascript/reference/geometry#spherical.computeLength

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...