Метро

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

Внимание. Перед использованием модуля его необходимо подключить.

Поиск ближайших станций метро

Класс YMaps.Metro.Closest позволяет производить поиск ближайших станций метро и получать набор меток в качестве результата.

Конструктор класса принимает два параметра:

  • request - геоточка, ближайшие станции до которой требуется найти;
  • options - параметры:
    • span - размер области (в градусах), внутри которой требуется искать станции метро (по умолчанию new YMaps.Size(0.1, 0.1));
    • results - количество возвращаемых результатов (по умолчанию 10);
    • skip - пропустить первые n результатов;
    • prefLang - предпочитаемый язык выдачи результатов (по умолчанию "ru").
Примечание. Количество возвращаемых результатов поиска не должно превышать 100, а размер области поиска ограничен областью 1 х 1 градус.

Чтобы произвести поиск ближайших станций метро создайте экземпляр класса YMaps.Metro.Closest и передайте ему в качестве параметра геоточку, рядом с которой требуется искать. Класс YMaps.Metro.Closest представляет и себя группу, поэтому экземпляры этого класса могут быть сразу добавлены на карту.

var metro = YMaps.Metro.Closest(new YMaps.GeoPoint(37.64,55.76));
map.addOverlay(metro);

В результате работы примера, в переменной metro будут содержаться результаты поиска в виде специальных меток класса YMaps.Metro.Station.

Данный класс построен на основе класса метки YMaps.Placemark и отличается от него наличием дополнительных полей:

  • text - адрес станции одной строкой;
  • AddressDetails - структурированное представление адреса объекта в соответствии со стандартом xAL.

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

В классе YMaps.Metro.Closest предусмотрено два события: Load (поиск прошел без ошибок) и Fault (с ошибками).

Пример ниже демонстрирует обработку событий:

// Поиск ближайших станций метро
var metro = new YMaps.Metro.Closest(new YMaps.GeoPoint(37.64,55.76), { results : 3 } )

// Обработчик успешного завершения
YMaps.Events.observe(metro, metro.Events.Load, function (metro) {
    if (metro.length()) {
        metro.setStyle("default#greenSmallPoint");
        map.addOverlay(metro);
    } else {
        alert("Поблизости не найдено станций метро");
    }
});

YMaps.Events.observe(metro, metro.Events.Fault, function (metro, error) {
    alert("При выполнении запроса произошла ошибка: " + error);
});

Открыть пример в новом окне