Метро
Модуль "Метро" позволяет осуществлять поиск ближайших станций метрополитена в заданной области карты.
Внимание
Перед использованием модуля его необходимо подключить.
Поиск ближайших станций метро
Класс 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);
});