1

我们提供路线优化服务,这些路线通常每天多次在一个小区域内进行 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
4

1 回答 1

1

是的,您提出了我建议的结果:

  1. 使用街道地址执行查询
  2. 检查 ResultsQuality 是否模棱两可/不好,然后...
  3. ...仅使用邮政编码执行第二个查询

另一种提高英国地址的 FindAddressResults 质量的方法是尝试对 FindAddressResults 进行几次不同的调用,直到找到一个提供“良好”质量结果的调用。每次调用的参数都会略有不同。英国地址非常灵活,例如房屋名称可能是 1 号线(使 2 号线成为街道);并且可能有不止一个地方(美国用语中的“城市”) - 例如。一个村庄和一个城市/城镇。地址中。

首先运行一些测试数据;并找到表现最佳的组合。然后,您的呼叫序列将从最佳组合、次佳组合等开始,直到找到“好”结果。最后,如果没有结果,您可以尝试使用 Postcode-only 调用,如上所述。

于 2012-07-12T12:57:28.040 回答