禁止Google Distance Matrix服务使用AREA代码

时间:2019-02-01 18:30:57

标签: reactjs forms filter documentation google-distancematrix-api

我正在处理表单功能的核心部分,以查找两个邮政编码之间的距离。它确实可以准确找到距离,但是不幸的是,这个Google Distance Matrix API还在搜索现有的区号,这可能会导致随机和不必要的里程返回。

目前,我可以找到介于64154和816(19.1)之间的里程,但是我想完全省略任何“区域代码”数据的返回。

这是返回所述数据的函数:

EXEC sp_updatestats

我在文档中找不到任何可以过滤某些地址类型的内容。我什至尝试对字符长度设置不同的格式限制,这种限制在大多数情况下都有效,但是用户仍然可以在输入的末尾始终输入三位数并“空格”。不幸的是,这将绕过我的条件并返回区域代码的数据,因为我要寻找的字符长度将得到满足 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", " ")}) } } }); }

1 个答案:

答案 0 :(得分:0)

好吧,我最终使用了正则表达式模式来检查字符串是否包含5个数字。

这是什么,它不会阻止API返回“区域代码”搜索,但会通过将其始终设置为零来阻止计算里程:

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

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

现在工作!