Мы используем службу оптимизации маршрутов, эти маршруты обычно включают более 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
Единственное, что я могу придумать, это установить переменную «Максимальное расстояние», если 1-й элемент (наилучшее совпадение) в 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