Клуб API Карт

precision некорректное значение имеет

bardex
8 октября 2010, 15:44

делаю геокодирование через JS API

запрос: "Москва, Ленина, 1"  (в Москве такого адреса нет, и именно это мне надо проверить есть или нет  адрес)

сервер находит "Россия, Московская область, Ленинский район, село Беседы, улица Ленина, 1" и 

в поле precision гордо пишет "exact" - точное совпадение ((

3 комментария
Подписаться на комментарии к посту
На самом деле это не ошибка, а штатное поведение геокодера.
Поле precision описывает точность нахождения номера дома.
Возможно из документации это не очевидно, но это так.

По вашему запросу геокодер находит ул.Ленина в Московской области,
и это тоже правильно т.к. Москва это областной центр (центр Московской области)

Для решения вашей задачи рекомендую использовать поле Locality или ограничить область поиска
параметрами spn и rspn
http://api.yandex.ru/maps/geocoder/doc/desc/concepts/input_params.xml
эээ
как-то это несерьёзно,
точность нахождения номера дома.

в России миллиарды домов, где-неибудь да найдётся дом номер 1, какой это имеет информационный смысл ? Если я не имею простого и адекватного способа просто оценить я нашёл что искал или нет.

По вашему запросу геокодер находит ул.Ленина в Московской области,
и  это тоже правильно т.к. Москва это областной центр (центр Московской  области)

это просто класс , поскольку Москва это еще и столица России, то вообще любой насёленный пункт в стране, где есть хоть что-нибудь с названием "Ленина",  подходит под этот запрос.
Перебирать иерархию Locality (это отдельная тема, потому как город может быть то в одном, то в другом поле) , чтобы проверить те ли координаты мне возвращают или нет, то же не серьёзно. Системе ЯК наверняка проще оценить достоверность результатов, ведь поняла же она что ищут город Москву и улицу Ленина, нужно просто не расширять область поиска  на Московскую область, например если передан параметр "искать строго", это кстати и нагрузку на ваши сервера снизит.
 
в России миллиарды домов, где-неибудь да найдётся дом номер 1, какой это имеет информационный смысл ?

Это имеет смысл если вы искали дом номер 16 корпус 3,
но такого нет а есть только 16к.2 или только 15.
Просто параметр precision не описывает существует такая улица в таком городе, он про точность определения номера дома.


это просто класс , поскольку Москва это еще и столица России, то вообще  любой насёленный пункт в стране, где есть хоть что-нибудь с названием  "Ленина",  подходит под этот запрос.


Эта логика поиска не с потолка взята.
Мы анализируем логи и видим что часто ищут адрес в области и указывают при этом областной центр (Например: "Новосибирск, ...адрес в Новосибирской области")
Так же границы города и области подчас рызмыты (взять ту же Москву)
и один адрес сегодня в МО а завтра уже в Москве.


нужно просто не расширять область поиска  на Московскую область, например если передан параметр "искать строго"


Именно такой вариант я вам и предлагал выше
От геокодера можно узнать центр и спан Москвы и передать их в параметрах запроса ll и spn и указать rspn=1 (можно еще указать results=1
чтобы ответ был минимальным, ведь мы проверяем лишь наличие адреса)
в этом случае он ничего не найдет 0, что и решит вашу задачу.


Если я не имею простого и адекватного способа просто оценить я нашёл что искал или нет.

Мы подумаем что тут можно сделать, но в данный момент есть только те варианты что я перечислил.