Клуб API Карт

Поиск по карте....

Unknow.2010
23 февраля 2010, 09:11

   YMaps.jQuery(function () {
            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
            map.setCenter(new YMaps.GeoPoint(41.06,57.76), 8);

            // Добавление элементов управления на карту
            map.addControl(new YMaps.TypeControl());
            map.addControl(new YMaps.Zoom());
            map.addControl(new YMaps.ToolBar());
            map.addControl(new YMaps.MiniMap());
            map.addControl(new YMaps.ScaleLine());
            map.enableScrollZoom();

            // Создание поиска для текущей карты
            var searcher = new Search(map);
        });

 

         // Класс для организации поиска

        function Search (map) {

            var _this = this,



                // Видимая область карты

                bounds = map.getBounds(),



                // Результат поиска, отображаемый на карте

                geoResult,



                // Поисковое поле

                searchInput = YMaps.jQuery("#searchText"),



                // Результаты поиска

                searchResults = YMaps.jQuery("#searchResults");



            // Поиск по щелчку на кнопке

            YMaps.jQuery("#searchButton").bind("click", function () {

                _this.search();

            });



            // и при нажатии клавиши "Enter" в поисковом поле

            searchInput.bind("keyup", function (e) {

                if (e.keyCode == 13) {

                    _this.search();

                }

            });



            // Ищет объекты в видимой области карты

            this.search = function (skip) {

                skip = skip || 0;



                searchResults.html("Идет поиск...");



                // Создание объекта геокодера

                var geocoder = new YMaps.Geocoder(searchInput.val(), {

                    // Пропустить первые n реузультатов

                    skip : skip,



                    // Задаем область для поиска

                    boundedBy : bounds,



                    // Искать только в заданной области

                    strictBounds : 1

                });



                // Обработчик успешного завершения геокодирования

                YMaps.Events.observe(geocoder, geocoder.Events.Load,
function (geocoder) {



                    // Если был найден хотя бы один результат без
опечаток

                    if (geocoder.length() && !geocoder.suggest) {



                        // Формирование списка результатов

                        this.generateSearchList(geocoder);



                        // Создание постраничной навигации

                        this.createPaging(geocoder.found, skip);

                    }else {

                        this.error(geocoder);

                    }

                }, this);



                // Неудачное завершение геокодирования

                YMaps.Events.observe(geocoder, geocoder.Events.Fault,
function (geocoder, error) {

                    alert("Произошла ошибка: " + error)

                });

            }

 Добрый день, в этом коде центр карты задается вручную и осуществляется
поиск только по видимой её части, а как сделать чтобы при перемещении
карты автоматически определялся новый центр карты и поиск осуществлялся
уже в новой области относительно нового центра...



YMaps.jQuery(function () {

            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            map.setCenter(new YMaps.GeoPoint(41.06,57.76), 8);



----------------------------------------------------------------------------------

            YMaps.Events.observe(map, map.Events.MoveEnd, function (map,
mEvent) {

             var a = map.getCenter();

            alert(a);

             });

             map.setCenter(a,8);

------------------------------------------------------------------------------------

            // Создание поиска для текущей карты

            var searcher = new Search(map);

        });

В таком варианте alert выводит новый центр, но поиск в данном случае
совсем не работает....



Все вроде получилось...



YMaps.jQuery(function () {

            var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            map.setCenter(new YMaps.GeoPoint(41.06,57.76), 8);



            // Добавление элементов управления на карту

            map.addControl(new YMaps.TypeControl());

            map.addControl(new YMaps.Zoom());

            map.addControl(new YMaps.ToolBar());

            map.addControl(new YMaps.MiniMap());

            map.addControl(new YMaps.ScaleLine());

            map.enableScrollZoom();

        

------------------------------------------------------------------------------------------

             bounds= map.getBounds();

            YMaps.Events.observe(map, map.Events.MoveEnd, function (map,
mEvent) {

           bounds= map.getBounds();

        

             });

----------------------------------------------------------------------------------------

            // Создание поиска для текущей карты

            var searcher = new Search(map);

        });



        // Класс для организации поиска

        function Search (map) {

            var _this = this,

---------------------------------------------------------------------------------------------



---------------------------------------------------------------------------------------------

                // Результат поиска, отображаемый на карте

                geoResult,



                // Поисковое поле

                searchInput = YMaps.jQuery("#searchText"),........



Может кому пригодится.
2 комментария
Подписаться на комментарии к посту
Нельзя ли подобное прятать под кат?
Спасибо за пример. Было бы совсем здорово, если бы вы приводили готовые странички, наглядно поясняющие, что и как. Как у Саши на народе...