我正在处理表单功能的核心部分,以查找两个邮政编码之间的距离。它确实可以准确找到距离,但是不幸的是,这个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", " ")})
}
}
});
}
答案 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>
现在工作!