Запретить службе Google Distance Matrix использовать коды AREA - PullRequest
0 голосов
/ 01 февраля 2019

Я работаю над основной частью моей функциональности формы, которая находит расстояние между двумя почтовыми индексами.Он точно находит расстояние, но, к сожалению, этот API-интерфейс Google Distance Matrix также выполняет поиск существующих кодов городов, что может привести к случайному и ненужному возврату пробега.

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

Эта функция возвращает указанные данные:

 handleChange = (e) => {
    const name = e.target.name
    const value = e.target.value
    this.setState({
      [name]: value
  //call back function to make sure we get the last character from the user input
    }, () => {
      this.getMiles(this.state.origin, this.state.destination)
    })
  }

  getMiles = (origin, destination) => {
    const {google} = this.props
     let service = new google.maps.DistanceMatrixService()
        console.log(origin)
        console.log(destination)
         service.getDistanceMatrix({
          origins: [origin],
          destinations: [destination],
          travelMode: 'DRIVING',
          unitSystem: google.maps.UnitSystem.IMPERIAL,
          avoidHighways: false,
          avoidTolls: false
        }, (response, status) => {
          if (status !== 'OK') {
            alert('Error was: ' + status);
          } else {
            let originList = response.originAddresses;
            let destinationList = response.destinationAddresses;
            if (response.rows[0].elements[0].status === 'NOT_FOUND'){
              return false
            } else{
                this.setState({mileage: response.rows[0].elements[0].distance.text.replace("mi", " ")})
            }
        }
    });
  }

Я не могу найти ничего вдокументация, которая позволила бы мне отфильтровать определенные типы адресов.Я даже пытался установить различные ограничения формы в отношении длины символов, что по большей части работает, но пользователь все еще может ввести три цифры и «пробел» вплоть до конца ввода.К сожалению, это обойдет мои условные условия и вернет данные для КОДА ОБЛАСТИ, потому что искомая длина символа будет выполнена "816 ".length === 5

1 Ответ

0 голосов
/ 01 февраля 2019

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

Это не мешает API возвращать запросы AREA CODEно он не позволяет рассчитать мой пробег, постоянно устанавливая его на ноль:

let fiveNumberMatch = /^[0-9]{5}$/;

<h1>{!this.state.origin.match(fiveNumberMatch) || !this.state.destination.match(fiveNumberMatch) ? this.state.mileage = 0 : this.state.mileage}</h1>

Работает сейчас!

...