Как получить массив широты и долготы из API направления карт Google - PullRequest
0 голосов
/ 13 июня 2018

Я создаю программное обеспечение для отслеживания.Android-устройство отправляет свое местоположение, и теперь я должен проверить, находится ли это местоположение в указанном администратором направлении.

Обычно администратор устанавливает маршрут для сотрудника (сотрудник использует телефон Android) с помощью карт Google.(может быть сохранен как ряд широты и долготы в базе данных), если местоположение, отправленное сотрудником (широта, долгота), отсутствует в его маршруте, тогда администратор получит уведомление на веб-сайте.Я хочу помочь с лагерем.Просто я хочу знать, отклонился ли сотрудник от своего маршрута или нет.Возможно ли это сделать?Пожалуйста, ответьте, я буду очень признателен.

<script>
  function initMap() {
    var directionsService = new google.maps.DirectionsService;
    var directionsDisplay = new google.maps.DirectionsRenderer;
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 7,
      center: {lat: 41.85, lng: -87.65}
    });
    directionsDisplay.setMap(map);

    var onChangeHandler = function() {
      calculateAndDisplayRoute(directionsService, directionsDisplay);
    };
    document.getElementById('start').addEventListener('change', onChangeHandler);
    document.getElementById('end').addEventListener('change', onChangeHandler);
  }

  function calculateAndDisplayRoute(directionsService, directionsDisplay) {
    directionsService.route({
      origin: document.getElementById('start').value,
      destination: document.getElementById('end').value,
      travelMode: 'DRIVING'
    }, function(response, status) {
      if (status === 'OK') {
          console.log(response);
        directionsDisplay.setDirections(response);
      } else {
        window.alert('Directions request failed due to ' + status);
      }
    });
  }
</script>

Могу ли я извлечь массив широты и долготы из переменной ответа?Если есть лучший способ, пожалуйста, поделитесь.

1 Ответ

0 голосов
/ 14 июня 2018

Ваш вопрос довольно широкий, и поэтому мой ответ будет слишком широким, но его было бы слишком много, чтобы написать в комментарии ...

Маршрут, возвращаемый службой маршрутов, не является набором точек иликоординаты.Это набор этапов и шагов, с начальной и конечной точкой (и зашифрованной полилинией). Подробнее см. Здесь .

В качестве примечания можно также декодировать закодированные полилинии, см. здесь для получения дополнительной информации.

Координаты, которые вы можетеУстройства, полученные от сотрудников, могут быть не точными на 100% и, следовательно, могут не попадать точно на траекторию направлений.Таким образом, вам нужно будет рассчитать допуск.

Возможно, вы захотите проверить Дорожный API и, более конкретно, Привязка к дорогам и / или Ближайшие услуги.

В качестве альтернативы, библиотека Geometry (которую необходимо загрузить с помощью вызова API) также имеет метод с именем isLocationOnEdge , который можно использовать для определения, находится ли точка на полилинии или рядом с ней., основанный на пользовательском допуске степени.

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

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