Клуб API Карт

API Яндекс.Карт, програмный интерфейс, уточнение адреса для поиска

aleksejj-shkavro
27 декабря 2010, 17:56

Здраствуйте, эксперты! Есть такой вопрос, каким образом можна сделать уточнение адреса, а именно сделать так, что б при вводе адреса нужно было обезательно нужно было указовать в точности до номера дома, иначе если не указали выдало alert об ошибке.

Пожалуйста наведите примеры, если можна.

Заранее благодарен.

12 комментариев
Подписаться на комментарии к посту
Можно геокодировать запрос и проверять тип топонима, пришедший в ответе (поле kind)
если это дом (т.е. kind == 'house') то пользователь ввел дом, если нет - кидать алерт - "адрес не найден или вы не ввели номер дома".
как то так.
Лунный программист, а не можеш написать этот фрагмент кода, пожалуйста, если можеш... очень надо  
потому что у меня не получаеться, вообще карты незагружает(((
либо не хочет искать(((
Ну допустим тот input, куда вводят адрес имеет id="search"





        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {

            // Создание экземпляра карты и его привязка к созданному контейнеру
            map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);

            YMaps.jQuery('form').bind('submit', function (e) {
                e.preventDefault();
                var target = YMaps.jQuery(e.target);

                var geocoder = new YMaps.Geocoder(target.find('#search').val(), {results: 1});
                YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
                    var result = this.get(0);
                    alert(result.kind);
                });
            });

        });




Можно после ввода адреса производить геокодирование и проверять precision у результатов.

Также можете посмотреть примеры по геокодированию
Лунный программист прав, нужно смотреть на kind.
мне как раз нужно precision - exact я думаю, только я не знаю куда это всунуть что б оно заработало, зеленый я еще в  этом((( 
хотя да лутше kind - > house
Cделай несколько полей (город, улица и номер дома) и при сабмите проверяй что все они заполненны.  Для jQuery есть плагин для валидации.

Либо простой поиск выводящий место на карте и пользователь обязательно должен кликнуть на карте.

PS. Что произойдет если дом есть, а на картах его нет?
Спасибо за ответ, но мне вообще то нужно чтоб в одно поле вводился город, а в другое остальное - улица, дом. То что написал Лунный программист работает, но оно выдает алерт насколько точно ты указал адрес, а мне нужно чтоб выдавало алерт что "не точно указан адрес" если невведен номер дома...
Я категорически не согласен с подходом Лунного програмиста к решению данной задачи.

Во первых валидацию на правильно заполненную строку можно проводить с помощью джаваскрипта, не прибегаю к геокодированию (разобрать строку и понять  есть ли в ней цифра можно с помощью регекспов, если вы не хотите разнести это на два инпута. )

Во вторых проверить правильность даже полного адреса у вас не выйдет в некоторых случаях. Например в новых домах, еще не внесенных в базу яндекса.  У пользователя должна быть возможность самостоятельно исправить результат.