我们运营路线优化服务,这些路线通常每天在一个小区域内多次交货100次,许多交货可能存在于同一邮政编码中。
因此,当我们使用MapPoint添加航点并优化邮政编码和运行时的运行时街道名称/门牌号码。
问题是,如果您使用错误的街道名称但是有效的邮政编码调用MapPoints FindAddressResults()
函数,它会忽略邮政编码并尝试在其他地方找到街道名称,通常是在数百英里以外的随机城镇。
现在,虽然我们可以要求商店提高数据质量 - 但这绝不可靠。
我的问题:在调用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
答案 0 :(得分:1)
是的,你已经想出了我建议的结果:
使用英国地址改进FindAddressResults质量的另一种方法是尝试对FindAddressResults进行一些不同的调用,直到找到一个给出“良好”质量结果的调用。每次调用的参数变化都会略有不同。英国地址非常灵活,例如房屋名称可能是第1行(街道2号线);并且可能有不止一个地方(美国用语中的“城市”) - 例如。一个村庄和一个城市/城镇。在地址。
首先运行一些测试数据;并找到表现最佳的组合。然后你的呼叫序列将从最佳组合开始,第二好,等等,直到找到“好”结果。最后,如果没有结果,您可以尝试仅限邮政编码,如上所述。