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"),........
Может кому пригодится.