我们提供路线优化服务,这些路线通常每天多次在一个小区域内进行 100 多次送货,很多送货可能存在于同一个邮政编码中。
因此,当我们使用 MapPoint 添加航点并优化邮政编码和街道名称/门牌号的运行时。
问题是,如果您FindAddressResults()
使用错误的街道名称但有效的邮政编码调用 MapPoints 函数,它会忽略邮政编码并尝试在其他地方查找街道名称,通常是在数百英里外的一个随机城镇。
现在,虽然我们可以要求商店提高他们的数据质量——但这永远不会可靠地完成。
我的问题:调用时FindAddressResults()
,有没有办法让它优先于街道名称的邮政编码,而不是优先考虑街道名称而不是邮政编码的默认行为?
示例用法(这是用 VB6 编写的(不要问)-但任何示例/信息都会有所帮助):
'#### GeoCode using postcode & streetname
Set oResults = oMap.FindAddressResults(rsRequest("Request_Address"), , , , rsRequest("Request_Postalcode"))
If oResults.Count = 0 Then
'#### Nothing was found, GeoCode using postcode only
Set oResults = oMap.FindAddressResults(, , , , rsRequest("Request_Postalcode"))
End If
我唯一能想到的就是设置一个“最大距离”变量,如果 oResults[] 中的第一个(最佳匹配)项目超过该阈值,则默认为仅邮政编码搜索 - 但这充其量只是个问题。
编辑 1 - 刚想出这个,似乎工作正常:
Set oResults = oMap.FindAddressResults(rsRequest("Request_Address"), , , , rsRequest("Request_Postalcode"))
If oResults.ResultsQuality <> geoFirstResultGood Then
echo (rsRequest("Request_Address") & " + " & rsRequest("Request_Postalcode") & " had poor results (" & CStr(oResults.ResultsQuality) & "), using postcode only instead...")
Set oResults = oMap.FindAddressResults(, , , , rsRequest("Request_Postalcode"))
End If