GeoQueryResult

Расширяет IPromiseProvider.

Результат выборки.

Конструктор | Методы

Конструктор

GeoQueryResult(source)

Параметры:

Параметр

Значение по умолчанию

Описание

source*

Тип: Object

Источник геообъектов:

  • IGeoObject - объект, реализующий соответствующий интерфейс;
  • IGeoObject[] - массив объектов, реализующих соответствующий интерфейс;
  • ICollection - коллекция объектов, реализующих интерфейс IGeoObject;
  • ICollection[] - массив коллекций объектов, реализующих интерфейс IGeoObject;
  • IPromiseProvider — объект-промис, передающий в функцию-обработчик источник данных для geoQuery. Также в функцию-обработчик может быть передан объект с полем geoObjects, содержащий источник данных для geoQuery;
  • GeoQueryResult - объект класса GeoQueryResult.
  • String|Object - строка или объект с JSON-описанием объектов;
  • Object[] - массив с JSON-описаниями геометрий. Элемент массива представляет из себя объект с полями type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule.
    JSON-описание объектов строится по следующему принципу (см. пример ниже). Объектом может быть сущность или коллекция сущностей. Коллекция сущностей представляет из себя объект с полями:
  • type — тип объекта. Значение поля должно быть равно "FeatureCollection";
  • features - массив дочерних сущностей коллекции. Дочерние объекты могут быть сущностями или вложенными коллекциями сущностей.
    Сущность представляет собой объект с полями:
  • type — тип объекта. Значение поля должно быть равно "Feature";
  • geometry — геометрия объекта. Содержит поля type и coordinates. Соответствует параметру, передаваемому в конструктор объекта ymaps.GeoObject;
  • options - опции геообъекта;
  • properties - данные геообъекта.

* Обязательный параметр/опция.

Примеры:

1.

// Создание GeoQueryResult из одиночного геообъекта.
var placemark = new ymaps.Placemark([34, 56]);
ymaps.geoQuery(placemark).addToMap(myMap);

2.

// Создание GeoQueryResult из массива геообъектов.
var objects = [
        new ymaps.Placemark([34, 56]),
        new ymaps.Rectangle([[34, 56], [36, 57]])
    ];
ymaps.geoQuery(objects).addToMap(myMap);

3.

// Создание GeoQueryResult из коллекции геообъектов.
var result = ymaps.geoQuery(myMap.geoObjects).searchIntersect(myMap);
alert("Количество геообъектов в видимой области карты: " + result.getLength());

4.

// Создание GeoQueryResult из vow.Deferred.
var result = ymaps.geoQuery(ymaps.geocode('Сыромятнический переулок')).searchInside(myGeoBounds);
// Поскольку источник данных асинхронный, нужно дождаться обработки результата.
result.then(function () {
    alert('Количество объектов, лежащих внутри заданной области: ' + result.getLength());
});

5.

//  Создание GeoQueryResult из JSON.
var result = ymaps.geoQuery({
    type: 'FeatureCollection',
    features: [
        {
            type: 'Feature',
            geometry: {
                type: 'Circle',
                coordinates: [15, 15],
                radius: 100
            }
        },
        {
            type: 'Feature',
            geometry: {
                type: 'LineString',
                coordinates: [[15, 16], [66, 23]]
            }
        },
        // Коллекции объектов могут быть вложенными.
        {
            type: 'FeatureCollection',
            features: [
                {
                    type: 'Feature',
                    geometry: {
                        type: 'Point',
                        coordinates: [12, 41]
                    },
                    properties: {
                        name: 'point'
                    },
                    options: {
                        preset: 'islands#yellowIcon'
                    }
                }
            ]
        }
    ]
});
// Добавление не точечных объектов на карту как есть.
result.search('geometry.type != "Point"').addToMap(myMap);
// Точечные объекты добавим на карту через кластеризатор.
myMap.geoObjects.add(result.search('geometry.type == "Point"').clusterize());

Методы

Имя

Возвращает

Описание

add(source)

GeoQueryResult

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

addEvents(events, callback, context)

GeoQueryResult

Навешивает обработчики событий на элементы выборки.

addTo(collection)

GeoQueryResult

Метод для добавления объектов в коллекцию геообъектов.

addToMap(map)

GeoQueryResult

Метод для добавления объектов на карту.

applyBoundsToMap(map[, options])

GeoQueryResult

Метод, позволяющий установить видимую область карты так, чтобы видны были все объекты из выборки.

clusterize([options])

Clusterer

Метод создает кластеризатор и добавляет в него объекты из выборки. В случае, если данные выборки еще не готовы, они будут добавлены в кластеризатор сразу после обработки, а возвращенный кластеризатор изначально будет пуст. В кластеризатор будут добавлены только объекты с геометрией "Point".

each(callback, context)

GeoQueryResult

Возвращает ссылку на себя.

get(index)

IGeoObject

Возвращает элемент выборки по индексу.

getBounds()

Number[][]|null

Возвращает географические координаты области, охватывающей объекты результата.

getCenter(map)

Number[]

Метод, возвращающий центр области, охватывающей объекты результата, в географических координатах.

getCentralObject(map)

IGeoObject|null

Метод для получения объекта, наиболее близкого к центру видимой области карты.

getClosestTo(object)

IGeoObject|null

Метод, возвращающий объект выборки, ближайший к указанному. Если на вход подается объект, уже находящийся в выборке, то вернется другой объект выборки, ближайший к указанному. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

getExtreme(key)

Number

Возвращает максимальные и минимальные значения координат среди координат объектов выборки.

getExtremeObject(key)

IGeoObject

Метод, возвращающий объект с минимальной или максимальной координатой среди координат объектов выборки.

getGlobalPixelBounds(map)

Number[][]|null

Метод, возвращающий глобальные пиксельные координаты области для текущего зума карты.

getGlobalPixelCenter(map)

Number[]

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

getIterator()

IIterator

Возвращает итератор по объектам результата.

getLength()

Number

Возвращает количество элементов в результате.

getMaxZoom(map[, options])

Number

Метод, вычисляющий максимальный коэффициент масштабирования, при котором в видимую область карты попадают все объекты.

getParent()

GeoQueryResult|null

Возвращает ссылку на родительскую выборку, если текущая выборка была создана в результате изменения другого объекта GeoQueryResult.

indexOf(item)

Number

Возвращает индекс элемента в выборке. Если элемент не найден, возвращается -1.

intersect(result)

GeoQueryResult

Метод создает новую выборку, содержащую общие элементы для двух других выборок.

isReady()

Boolean

Возвращает признак, готовы результаты выборки или еще обрабатываются.

map(callback[, context])

GeoQueryResult

Метод, вызывающий метод callback для всех элементов выборки и формирующий новую выборку на основе полученных результатов.

remove(objects)

GeoQueryResult

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

removeEvents(events, callback, context)

Удаляет подписку на событие с объекта. Обратите внимание, что для корректной отписки передаваемые аргументы должны быть точно такие же, как при подписке через метод addEvents.

removeFrom(collection)

GeoQueryResult

Метод для удаления объектов из коллекции.

removeFromMap(map)

GeoQueryResult

Метод для удаления объектов с карты.

reverse()

GeoQueryResult

Переставляет элементы выборки в обратном порядке и возвращает новую выборку.

search(condition)

GeoQueryResult

Метод для поиска объектов выбоки, удовлетворяющих условиям.

searchContaining(object)

GeoQueryResult

Метод, создающий новую выборку из объектов, содержащих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

searchInside(object)

GeoQueryResult

Метод, создающий новую выборку из объектов, целиком входящих в указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

searchIntersect(object[, options])

GeoQueryResult

Метод, создающий новую выборку из объектов, пересекающих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

setOptions(key[, value])

GeoQueryResult

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

setProperties(path, value)

GeoQueryResult

Метод, позволяющий задать значение поля properties всем элементам выборки.

slice(begin[, end])

GeoQueryResult

Метод, возвращающий срез выборки.

sort(comparator)

Метод для сортировки объектов выборки. Не изменяет исходную выборку, а создает новую, содержащую упорядоченные объекты.

sortByDistance(object)

GeoQueryResult

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

then([onFulfill[, onReject, context)

GeoQueryResult

Подписка на "обещание".

unsetOptions(keys)

GeoQueryResult

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

unsetProperties(path)

GeoQueryResult

Метод позволяющий обнулить значение поля properties у всех элементов выборки.

Описание методов

add

{GeoQueryResult} add(source)

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

Возвращает новый объект с объединенным набором геообъектов.

Параметры:

Параметр

Значение по умолчанию

Описание

source*

Тип: Object

Источник геообъектов:

  • IGeoObject - объект, реализующий соответствующий интерфейс;
  • IGeoObject[] - массив объектов, реализующих соответствующий интерфейс;
  • ICollection - коллекция объектов, реализующих интерфейс IGeoObject;
  • ICollection[] - массив коллекций объектов, реализующих интерфейс IGeoObject;
  • vow.Promise — объект-промис, передающий в функцию-обработчик источник данных для geoQuery;. Также в функцию-обработчик может быть передан объект с полем geoObjects, содержащий источник данных для geoQuery;
  • GeoQueryResult - объект класса GeoQueryResult.
  • String|Object - строка или объект с JSON-описанием объектов;
  • Object[] - массив с JSON-описаниями геометрий. Элемент массива представляет из себя объект с полями type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule.
    JSON-описание объектов строится по следующему принципу (см. пример ниже). Объектом может быть сущность или коллекция сущностей. Коллекция сущностей представляет из себя объект с полями:
  • type — тип объекта. Значение поля должно быть равно "FeatureCollection";
  • features - массив дочерних сущностей коллекции. Дочерние объекты могут быть сущностями или вложенными коллекциями сущностей.
    Сущность представляет собой объект с полями:
  • type — тип объекта. Значение поля должно быть равно "Feature";
  • geometry — геометрия объекта. Содержит поля type и coordinates. Соответствует параметру, передаваемому в конструктор объекта ymaps.GeoObject;
  • options - опции геообъекта;
  • properties - данные геообъекта.

* Обязательный параметр/опция.

Примеры:

1.

// Добавление в GeoQueryResult одиночного геообъекта.
var placemark = new ymaps.Placemark([34, 56]);
myGeoQueryResult.add(placemark);

2.

// Добавление в GeoQueryResult массива геообъектов.
var objects = [
        new ymaps.Placemark([34, 56]),
        new ymaps.Rectangle([[34, 56], [36, 57]])    
];
// Обратите внимание, что в результате будет получен другой объект GeoQueryResult,
// а старый останется без изменений.
var newResult = myGeoQueryResult.add(objects);

3.

// Добавление в GeoQueryResult коллекции геообъектов.
// Обратите внимание, что в результате будет получен другой объект GeoQueryResult,
// а старый останется без изменений.
var newResult = myGeoQueryResult.add(myMap.geoObjects).searchIntersect(myBounds);
alert("Количество геообъектов в указанной области: " + myGeoQueryResult.getLength());

4.

// Добавление в GeoQueryResult результатов геокодирования.
// Обратите внимание, что в результате будет получен другой объект GeoQueryResult,
// а старый останется без изменений.
var newResult = myGeoQueryResult.add(ymaps.geocode('Сыромятнический переулок'));
newResult.searchInside(myGeoBounds);
// Поскольку источник данных асинхронный, нужно дождаться обработки результата.
result.then(function () {
    // Исходный объект все еще существует.
    alert('Было объектов до добавления:' + myGeoQueryResult.getLength());
    // В новом объекте уже и старые геообъекты, и добавленные.
    alert('Стало объектов после добавления: ' + result.getLength());
});

5.

// Добавление объектов из JSON-строки.
var result = ymaps.geoQuery(myMap.geoObjects),
var extendedResult = result.add('{"type": "Feature", "geometry": { "type": "Point", "coordinates": [15, 64] }}');
extendedResult.addToMap(myMap);

addEvents

{GeoQueryResult} addEvents(events, callback, context)

Навешивает обработчики событий на элементы выборки.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

events*

Тип: String|String[]

Тип или массив типов событий, на которые совершается подписка.

callback*

Тип: Function

Функция-обработчик.

context*

Тип: Object

Контекст выполнения функции-обработчика.

* Обязательный параметр/опция.

Пример:

ymaps.geoQuery(map.geoObjects).search('geometry.type="Circle"').addEvents('click', function () {
    alert('Вы кликнули по кругу!');
});;});

addTo

{GeoQueryResult} addTo(collection)

Метод для добавления объектов в коллекцию геообъектов.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

collection*

Тип: ICollection

Коллекция, в которую добавляются объекты.

* Обязательный параметр/опция.

Пример:

// Покажем на карте объекты северного полушария.
var result1 = ymaps.geoQuery(placemarks).search('lat > 0').addTo(myMap.geoObjects);

addToMap

{GeoQueryResult} addToMap(map)

Метод для добавления объектов на карту.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, на которую добавляются объекты.

* Обязательный параметр/опция.

Пример:

// Покажем на карте объекты северного полушария.
var result1 = ymaps.geoQuery(placemarks).search('lat > 0').addToMap(myMap);

applyBoundsToMap

{GeoQueryResult} applyBoundsToMap(map[, options])

Метод, позволяющий установить видимую область карты так, чтобы видны были все объекты из выборки.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта.

options

Тип: Object

Опции.

options.checkZoomRange

false

Тип: Boolean

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

options.duration

0

Тип: Number

Время анимации в миллисекундах.

options.preciseZoom

false

Тип: Boolean

Возможность использования дробных коэффициентов масштабирования.

options.timingFunction

'linear'

Тип: String

Тайминг-функция. Аналогично значению CSS свойства transition-timing-function. Полный список значений: http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag

options.useMapMargin

true

Тип: Boolean

Нужно ли учитывать отступы карты map.margin.Manager.

options.zoomMargin

0

Тип: Number|Number[]

Отступы от границ видимой области карты. Если задано одно число - оно применяется ко всем сторонам. Если задано два - то это горизонтальные и вертикальные отступы соответственно. Если задан массив из 4х чисел, то это отступы top, right, bottom, left. При включенной опции "useMapMargin" значение "zoomMargin" складывается со значениями, которые были рассчитаны в менеджере отступов map.margin.Manager.

* Обязательный параметр/опция.

Примеры:

1.

// Сделаем запрос на геокодирование и выставим карте видимую область так,
// чтобы на ней были видны сразу все результаты.
var result = ymaps.geoQuery(ymaps.geocode('улица Ленина')).applyBoundsToMap(myMap);
// Обратите внимание, что запрос на сервер асинхронный, нужно дождаться результата.
result.then(function () {
    alert("Результаты получены и видимая область карты скорректирована.");
}, function () {
    alert("Произошла ошибка.");});

2.

// Для синхронных запросов выставление новой области карты происходит сразу.
var result = ymaps.geoQuery(objects).applyBoundsToMap(myMap);
alert('Видимая область карты изменена.');;

clusterize

{Clusterer} clusterize([options])

Метод создает кластеризатор и добавляет в него объекты из выборки. В случае, если данные выборки еще не готовы, они будут добавлены в кластеризатор сразу после обработки, а возвращенный кластеризатор изначально будет пуст. В кластеризатор будут добавлены только объекты с геометрией "Point".

Возвращает кластеризатор.

Параметры:

Параметр

Значение по умолчанию

Описание

options

Тип: Object

Опции, передаваемые в конструктор объекта Clusterer.

Пример:

// Выберем только кафе и добавим их в кластеризатор.
var clusterer = ymaps.geoQuery(objects).search('properties.type="Cafe"').clusterize();
myMap.geoObjects.add(clusterer);

each

{GeoQueryResult} each(callback, context)

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

callback*

Тип: Function

Функция-обработчик. Вызывается для каждого элемента выборки и получает его на вход.

context*

Тип: Object

Контекст выполнения функции-обработчика.

* Обязательный параметр/опция.

Пример:

// Скроем красные метки в видимой области карты.
ymaps.geoQuery(placemarks).searchIntersect(myMap).each(function(pm) {
    if (pm.options.get('preset') == 'islands#redIcon') {
        myMap.geoObjects.remove(pm);
    }
});

get

{IGeoObject} get(index)

Возвращает элемент выборки по индексу.

Параметры:

Параметр

Значение по умолчанию

Описание

index*

Тип: Number

Индекс элементов.

* Обязательный параметр/опция.

Примеры:

1.

// Пример при синхронной обработке.
var result = ymaps.geoQuery(placemarks).sort('lat'),
// Самый южный объект.
southObject = result.get(0),
// Самый северный объект.
northObject = result.get(result.getLength() - 1);

2.

// Пример при асинхронной обработке.
var result = ymaps.geoQuery(ymaps.geocode('кафе Москва')).sort('lat');
// Нужно дождаться готовности результата для дальнейшей обработки.
result.then(function () {
    // Самый южный объект.
    var southObject = result.get(0),
    // Самый северный объект.
    var northObject = result.get(result.getLength() - 1);
});

getBounds

{Number[][]|null} getBounds()

Возвращает географические координаты области, охватывающей объекты результата.

Примеры:

1.

// Пример синхронного добавления объектов.
// Устанавливаем центр и масштаб карты так, чтобы были видны все объекты, добавленные на карту.
var myResult = ymaps.geoQuery(myMap.geoObjects);
myMap.setBounds(myResult.getBounds(), { checkZoomRange: true });

2.

// Пример асинхронного добавления объектов.
// Нужно дождаться готовности данных и только потом вызывать метод getBounds.
var myResult = ymaps.geoQuery(ymaps.geocode('р. Звероножка')).then(function () {
     myMap.setBounds(myResult.getBounds(), { checkZoomRange: true });
});

getCenter

{Number[]} getCenter(map)

Метод, возвращающий центр области, охватывающей объекты результата, в географических координатах.

Возвращает координаты центра области в географических координатах.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, для которой нужно произвести расчеты.

* Обязательный параметр/опция.

Пример:

// Сместим центр карты в центр области, охватывающей объекты.
myMap.setCenter(ymaps.geoQuery(objects).getCenter());

getCentralObject

{IGeoObject|null} getCentralObject(map)

Метод для получения объекта, наиболее близкого к центру видимой области карты.

Возвращает ссылку на геообъект или null в случае пустой выборки.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта.

* Обязательный параметр/опция.

Примеры:

1.

// Пример работы при синхронных операциях.
// Откроем балун у объекта, ближайшего к центру видимой области карты.
ymaps.geoQuery(objects).getCentralObject(myMap).balloon.open();

2.

// Пример использования асинхронных операций.
var result = ymaps.geoQuery(ymaps.geocode('Улица Строителей'));
// Отправили запрос на геокодирование,
// теперь нужно дождаться результата.
result.then(function () {
    result.getCentralObject(myMap).balloon.open();
});

getClosestTo

{IGeoObject|null} getClosestTo(object)

Метод, возвращающий объект выборки, ближайший к указанному. Если на вход подается объект, уже находящийся в выборке, то вернется другой объект выборки, ближайший к указанному. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

Возвращает объект выборки, ближайший к указанному или null, если объект невозможно найти.

Параметры:

Параметр

Значение по умолчанию

Описание

object*

Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:

  • IGeoObject - объект, реализующий интефейс IGeoObject;
  • IGeometry - объект, реализующий интерфейс IGeometry;
  • Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
  • Number[] - координаты точки;
  • Object - Json-описание геометрии. Содержит поля type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule.

* Обязательный параметр/опция.

Примеры:

1.

// Примеры использования метода при различных входных данных.
var result = ymaps.geoQuery(objects).addToMap(myMap);

// 1. IGeoObject.
// Можно вести поиск относительно стороннего объекта.
var polyline = new ymaps.Polyline([[35, 65], [35, 66], [34, 62], [34, 63]]);
myMap.geoObjects.add(polyline);
var closestObject = result.getClosestTo(polyline);
// Можно искать по объекту из этой же выборки.
var closestToFirst = result.getClosestTo(result.get(0));

// 2. IGeometry.
var closestToGeometry = result.getClosestTo(placemark.geometry);

// 3. Карта.
// Найдем объект, ближайший к границе видимой области карты.
var edgeObject = result.getClosestTo(myMap);

// 4. Объект, ближайщий к точке.
var closestObject = result.getClosestTo([34, 53]);

2.

// Пример использования при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Париж')).addToMap(myMap);
// Дождемся ответа от сервера и получим объект, ближайший к точке.
result.then(function () {
    var closestObject = result.getClosestTo([34, 65]);
    // Если ответ пуст, то ближайший объект не найдется.
    if (closestObject) {
        closestObject.balloon.open();
    }
});

getExtreme

{Number} getExtreme(key)

Возвращает максимальные и минимальные значения координат среди координат объектов выборки.

Параметры:

Параметр

Значение по умолчанию

Описание

key*

Тип: String

Ключ для получения данных. Может принимать следующие значения:

  • top;
  • right;
  • bottom;
  • left.

* Обязательный параметр/опция.

Примеры:

1.

// Пример работы при синхронных операциях.
alert('Самая северная координата: ', ymaps.geoQuery(myMap.geoObjects).getExtreme('top'));

2.

// Пример работы при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Новгород'));
// Дождемся ответа от сервера и получим самую северную координату.
result.then(function () {
    alert('Самая северная координата в ответе: ' + result.getExtreme('top'));
});

getExtremeObject

{IGeoObject} getExtremeObject(key)

Метод, возвращающий объект с минимальной или максимальной координатой среди координат объектов выборки.

Возвращает объект с требуемой координатой.

Параметры:

Параметр

Значение по умолчанию

Описание

key*

Тип: String

Ключ для поиска объекта. Может принимать следующие значения:

  • top;
  • right;
  • bottom;
  • left.

* Обязательный параметр/опция.

Примеры:

1.

// Пример работы при синхронных операциях.
// Откроем балун на самом северном объекте.
var topObject = ymaps.geoQuery(myMap.geoObjects).getExtremeObject('top');
topObject.balloon.open();

2.

// Пример работы при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('море Лаптевых'));
// Нужно дождаться ответа от сервера, чтобы работать с данными.
result.then(function () {
    var topObject = result.getExtremeObject('top');
    // Если ответ пуст, то объект не найдется.
    if (topObject) {
        topObject.balloon.open();
    }
});

getGlobalPixelBounds

{Number[][]|null} getGlobalPixelBounds(map)

Метод, возвращающий глобальные пиксельные координаты области для текущего зума карты.

Возвращает глобальные пиксельные координаты области, охватывающей объекты результата.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, для которой ведутся расчеты.

* Обязательный параметр/опция.

Пример:

var result = ymaps.geoQuery(placemarks).search('properties.type="shop"').getGlobalPixelBounds(myMap);
if (Math.abs(result[0][0] - result[1][0]) > myMap.container.getSize()[0]) {
   alert('Объекты не поместятся на карту по ширине!');}

getGlobalPixelCenter

{Number[]} getGlobalPixelCenter(map)

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

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, для которой нужно произвести расчеты.

* Обязательный параметр/опция.

Пример:

// Посчитаем номер тайла, на который приходится центр области, охватывающей результат.
var globalPixelCenter = ymaps.geoQuery(objects).getGlobalPixelCenter(myMap),
    tileNumber = [
        Math.floor(globalPixelCenter[0] / 256),
        Math.floor(globalPixelCenter[1] / 256)
    ];
alert('Номер центрального тайла: ' + tileNumber[0] + ' ' + tileNumber[1]);

getIterator

{IIterator} getIterator()

Возвращает итератор по объектам результата.

Примеры:

1.

// Использование итератора с синхронными операциями.
// Поиск элементов, соответствующих координатам щелчка.
myMap.events.add('click', function (event) {
     var iterator = ymaps.geoQuery(myMap.geoObjects)
             .searchContaining(event.getCoordinates())
             .getIterator(),
         obj;
    while ((obj = iterator.getNext()) != iterator.STOP_ITERATION) {
        // Совершаем необходимые действия над геообъектом.
    }});

2.

// Использование итератора при асинхронных операциях.
// Создадим результат из запроса к геокодеру.
var result = ymaps.geoQuery(ymaps.geocode("Староколпакский переулок")).search("lat > 20");
// Обратите внимание, что мы только отправили запрос к серверу, ответ придет чуть позже.
// Поскольку запрос асинхронный, нужно дождаться его готовности перед получением результата.
result.then(function () {
     var iterator = result.getIterator(),
    var obj;
     while ((obj = iterator.getNext())  != iterator.STOP_ITERATION) {
        // Совершаем необходимые действия над геообъектом.
    }});

getLength

{Number} getLength()

Возвращает количество элементов в результате.

Примеры:

1.

var result = ymaps.geoQuery(myMap.geoObject).searchIntersect(myPolygon);
alert('Количество геообъектов, пересекающих многоугольник: ' + result.getLength());

2.

var result = ymaps.geoQuery(ymaps.geocode('Иваново')).searchInside(myMap);
// Поскольку мы отправили запрос на сервер, сразу посчитать количество элементов
// в результате нельзя. Нужно дождаться ответа.
result.then(function () {
    alert('Количество объектов в видимой области карты: ' + result.getLength());
});

getMaxZoom

{Number} getMaxZoom(map[, options])

Метод, вычисляющий максимальный коэффициент масштабирования, при котором в видимую область карты попадают все объекты.

Возвращает максимальный коэффициент масштабирования карты.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, для которой ведется расчет.

options

Тип: Object

Опции.

options.useMapMargin

true

Тип: Boolean

Нужно ли учитывать отступы карты map.margin.Manager.

* Обязательный параметр/опция.

Пример:

// Вычислим максимальный коэффициент масштабирования,
// при котором видны все объекты выборки
// и выставим ограничение для карты.
var maxZoom = ymaps.geoQuery(objects).getMaxZoom();
myMap.options.set('maxZoom', maxZoom);

getParent

{GeoQueryResult|null} getParent()

Возвращает ссылку на родительскую выборку, если текущая выборка была создана в результате изменения другого объекта GeoQueryResult.

Пример:

ymaps.geoQuery(objectsArray)
    // Сначала выберем объекты с типом "кафе" и зададим для них стили.
    .search('properties.type == "cafe"')
    .setOptions('preset', 'islands#yellowDotIcon')
    // А затем, не прерывая цепочку вызовов,
    // вернемся к исходной выборке и зададим стили для другой группы объектов.
    .getParent()
    .search('properties.type == "shop"')
    .setOptions('preset', 'islands#greenDotIcon');

indexOf

{Number} indexOf(item)

Возвращает индекс элемента в выборке. Если элемент не найден, возвращается -1.

Параметры:

Параметр

Значение по умолчанию

Описание

item*

Тип: IGeoObject

Искомый объект.

* Обязательный параметр/опция.

Пример:

// Отсортируем выборку по полю name.
var result = ymaps.geoQuery(polygons).sort('properties.name');
alert('Новая позиция первого элемента: ' + result.indexOf(polygons[0]));

intersect

{GeoQueryResult} intersect(result)

Метод создает новую выборку, содержащую общие элементы для двух других выборок.

Возвращает новую выборку, содержащую результат пересечения.

Параметры:

Параметр

Значение по умолчанию

Описание

result*

Тип: GeoQueryResult

Выборка, с которой пересекают исходную.

* Обязательный параметр/опция.

Примеры:

1.

// Пример пересечения при синхронных операциях.
var result = ymaps.geoQuery(placemarks),
var greenObjects = result.search('properties.color="green"'),
var roundObjects = result.search('properties.shape="round"'),
var greenRoundObjects = greenObjects.intersect(roundObjects);
alert('Количество круглых зеленых объектов: ' + greenRoundObjects.getLength());

2.

// Пример пересечения при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Ивановка')),
var filteredByLat = result.search('lat > 56'),
var filteredByLong = result.search('long > 36'),
var intersectedResult = filteredByLat.intersect(filteredByLong);
// Поскольку исходный запрос асинхронный, нужно дождаться готовности данных.
intersectedResult.then(function () {
    alert('Количество объектов с именем "Ивановка"' +
        'с координатами более [56, 36]: ' +
        intersectedResult.getLength());
});

isReady

{Boolean} isReady()

Возвращает признак, готовы результаты выборки или еще обрабатываются.

Пример:

var result = ymaps.geoQuery(ymaps.geocode('Иваново'));
if (!result.isReady()) {
    result.then(function () {
        //  Обработка данных.
    });
} else {
    //  Обработка данных.
}

map

{GeoQueryResult} map(callback[, context])

Метод, вызывающий метод callback для всех элементов выборки и формирующий новую выборку на основе полученных результатов.

Возвращает новую выборку.

Параметры:

Параметр

Значение по умолчанию

Описание

callback*

Тип: Function

Функция-обработчик. Принимает на вход элемент выборки. Возвращает экземпляр IGeoObject.

context

Тип: Object

Контекст выполнения функции-обработчика.

* Обязательный параметр/опция.

Пример:

// Добавим на карту только объекты-окружности.
var circlesResult = ymaps.geoQuery(objects).search('geometry.type="Circle"').addToMap(myMap),
// Также добавим на карту метки, обозначающие центры окружностей.
var centers = circlesResult.map(function (object) {
    return new ymaps.Placemark(object.geometry.getCenter());
}).addToMap(myMap);

remove

{GeoQueryResult} remove(objects)

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

Возвращает новый объект с результирующим набором геообъектов.

Параметры:

Параметр

Значение по умолчанию

Описание

objects*

Тип: Object

Объекты могут быть представлены в разном виде:

  • IGeoObject - объект, реализующий соответствующий интерфейс;
  • IGeoObject[] - массив объектов, реализующих соответствующий интерфейс;
  • ICollection - коллекция объектов, реализующих интерфейс IGeoObject;
  • ICollection[] - массив коллекций объектов, реализующих интерфейс IGeoObject;
  • GeoQueryResult - объект класса GeoQueryResult. Обратите внимание, что при асинхронных операциях нужно дождаться готовности результата для его корректного удаления;
  • vow.Promise - объект класса vow.Deferred. Должен быть зарезовлен массивом геообъектов или объектом с полем geoObjects.

* Обязательный параметр/опция.

Примеры:

1.

var objects = [
        new ymaps.Placemark([34, 56]),
        new ymaps.Rectangle([[34, 56], [36, 57]])
    ];
var result = ymaps.geoQuery(objects);
// Обратите внимание, что в результате будет получен другой объет GeoQueryResult,
// а старый останется без изменений.
var newResult = result.remove(objects[1]);

2.

// Удаление из GeoQueryResult массива геообъектов.
var objects = [
        new ymaps.Placemark([34, 56]),
        new ymaps.Rectangle([[34, 56], [36, 57]]),
        new ymaps.Placemark([35, 64])
    ];
var result = ymaps.geoQuery(objects);
// Обратите внимание, что в результате будет получен другой объект GeoQueryResult,
// а старый останется без изменений.
var newResult = result.remove([objects[1], objects[2]]);

3.

// Удаление коллекции геообъектов из GeoQueryResult.
// Добавим на карту объекты, которых там еще нет.
myGeoQueryResult.remove(myMap.geoObjects).addToMap(myMap);

4.

// Удаление из GeoQueryResult данных другого GeoQueryResult.
var result1 = ymaps.geoQuery(placemarks).search('properties.color="green"'),
var result2 = ymaps.geoQuery(placemarks).search('properties.shape="circle"'),
var result3 = result1.remove(result2);
alert('Количество зеленых некруглых фигур: ' + result3.getLength());

removeEvents

{} removeEvents(events, callback, context)

Удаляет подписку на событие с объекта. Обратите внимание, что для корректной отписки передаваемые аргументы должны быть точно такие же, как при подписке через метод addEvents.

Параметры:

Параметр

Значение по умолчанию

Описание

events*

Тип: String|String[]

Тип или массив типов событий, на которые была сделана подписка.

callback*

Тип: Function

Функция-обработчик, которую указали при подписке.

context*

Тип: Object

Контекст, который был указан при подписке.

* Обязательный параметр/опция.

Пример:

var callback = function () {
        alert('Вы кликнули по кругу!');    
};
ymaps.geoQuery(map.geoObjects).search('geometry.type="Circle"').addEvents('click', callback);
// ...
ymaps.geoQuery(map.geoObjects).search('geometry.type="Circle"').removeEvents('click', callback);

removeFrom

{GeoQueryResult} removeFrom(collection)

Метод для удаления объектов из коллекции.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

collection*

Тип: ICollection

Коллекция, из которой нужно удалить объекты.

* Обязательный параметр/опция.

Пример:

// Покажем на карте все объекты.
var result1 = ymaps.geoQuery(placemarks).addTo(myMap.geoObjects),
// А затем скроем объекты из северного полушария.
result2 = result1.search('lat > 0').removeFrom(myMap.geoObjects);

removeFromMap

{GeoQueryResult} removeFromMap(map)

Метод для удаления объектов с карты.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

map*

Тип: Map

Карта, с которой нужно удалить объекты.

* Обязательный параметр/опция.

Пример:

// Покажем на карте все объекты.
var result1 = ymaps.geoQuery(placemarks).addToMap(myMap),
// А затем скроем объекты из северного полушария.
var result2 = result1.search('lat > 0').removeFromMap(myMap);

reverse

{GeoQueryResult} reverse()

Переставляет элементы выборки в обратном порядке и возвращает новую выборку.

Возвращает новую выборку с элементами в обратном порядке.

Примеры:

1.

// Использование при синхронных запросах.
var result = ymaps.geoQuery(myMap.geoObjects).sort('x'),
    invertedResult = result.reverse();

2.

// Использование при асинхронных запросах.
var result = ymaps.geoQuery(ymaps.geocode('село Добрые пчелы')).sort('x'),
var invertedResult = result.reverse();
invertedResult.then(function () {
    // Результат получен. Готов к использованию.
});
{GeoQueryResult} search(condition)

Метод для поиска объектов выбоки, удовлетворяющих условиям.

Возвращает новую выборку, содержащую результаты поиска.

Параметры:

Параметр

Значение по умолчанию

Описание

condition*

Тип: String|Function

Строковый шаблон для поиска или функция-фильтр. Строковый шаблон имеет структуру " ". Возможные значения :

  • 'lat' - широта. Поддерживается только для точечных объектов;
  • 'lng', 'long' - долгота. Поддерживается только для точечных объектов;
  • 'x' - глобальные пиксельные координаты по оси x. Поддерживается только для точечных объектов;
  • 'y' - глобальные пиксельные координаты по оси y. Поддерживается только для точечных объектов;
  • 'geometry.type' - тип геометрии. Результат выполнения метода geometry.getType().
  • 'geometry.coordinates.' - координаты. Результат выполнения метода geometry.getCoordinates(). Для получения доступа к координате следует указывать ее индексы через точку - 'geometry.coordinates.0.1'.
  • 'properties.' - значение поля данных;
  • 'options.' - значение опций.
    Допустимые значения :
  • '>'
  • '>='
  • '==', '='
  • '!='
  • '<='
  • '<'
  • 'rlike', 'regexp' - соответствие значения некоторому регулярному выражению.
    Допустимые значения :
  • Число;
  • Строка - обязательно указывается в кавычках;
  • true;
  • false;
  • null;
  • undefined.
    Функция-фильтр принимает на вход объект из выборки и возвращает true/false. True - объект попадет в результирующую выборку, false - не попадет.

* Обязательный параметр/опция.

Примеры:

1.

// Пример поиска объектов при синхронных операциях.
var result = ymaps.geoQuery(myMap.geoObjects);

         // Поиск объектов с определенным типом геометрии. Обратите внимание, что
// значение поля указано в кавычках - это строка.
result.search('geometry.type = "Circle"')
// Поиск по координате.
    .search('geometry.coordinates.
0 > 100')
// Поиск по широте.
    .search('lat < 0')
// Поиск по пиксельным координатам.
    .search('x >= 100')
// Поиск по значению поля в "properties".
    .search('properties.name != null').search('properties.name rlike "(.) \\""')
    .search('properties.author.name = "Степан"')
// Поиск по значению опции.
    .search('options.visible = true');

2.

// Использование метода при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Лось'));
// Для работы с результатом нужно дождаться его готовности.
result.then(function () {
    result.search('properties.description regExp "*поселок*"')
        .addToMap(myMap)
        .applyBoundsToMap(myMap);
});

searchContaining

{GeoQueryResult} searchContaining(object)

Метод, создающий новую выборку из объектов, содержащих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

Возвращает новую выборку, содержащую искомые объекты.

Параметры:

Параметр

Значение по умолчанию

Описание

object*

Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:

  • IGeoObject - объект, реализующий интефейс IGeoObject;
  • IGeometry - объект, реализующий интерфейс IGeometry;
  • Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
  • Number[] - координаты точки; Если передан один параметр, трактуется как точка. Если передано два аргумента, трактуется как центр окружности;
  • Number[][] - координаты прямоугольной области;
  • Object - Json-описания геометрии.

* Обязательный параметр/опция.

Примеры:

1.

// Примеры использования метода при различных входных данных.
var result = ymaps.geoQuery(objects).addToMap(myMap);

// 1. IGeoObject.
var polygon = new ymaps.Polygon([[[35, 65], [35, 66], [34, 62], [34, 63], [35, 65]]]);
myMap.geoObjects.add(polygon);
var objectsContainingPolygon = result.searchContaining(polygon);

// 2. IGeometry.
var objectsContainingGeometry = result.searchContaining(polygon.geometry);

// 3. Map.
var objectsContainingMapBounds = result.searchContaining(myMap);

2.

// Пример использования при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('кафе'))
        .addToMap(myMap);
// Дождемся ответа от сервера перед обработкой результатов.
result.then(function () {
    var areas = result.map(function (object) {
                return new ymaps.Circle(object.geometry.getCoordinates(), 100);
            })
            .setOptions('visible', false)
            .addToMap(myMap);
    myMap.events.add('click', function (event) {
        if (areas.searchContaining(event.getCoordinates()).getLength()) {
            alert('Вы кликнули около кафе.');        }    });});

searchInside

{GeoQueryResult} searchInside(object)

Метод, создающий новую выборку из объектов, целиком входящих в указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

Возвращает новую выборку, содержащую искомые объекты.

Параметры:

Параметр

Значение по умолчанию

Описание

object*

Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:

  • IGeoObject - объект, реализующий интефейс IGeoObject;
  • IGeometry - объект, реализующий интерфейс IGeometry;
  • Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;

* Обязательный параметр/опция.

Примеры:

1.

// Примеры использования метода при различных входных данных.
var result = ymaps.geoQuery(objects).addToMap(myMap);

// 1. IGeoObject.
var polygon = new ymaps.Polygon([[[35, 65], [35, 66], [34, 62], [34, 63], [35, 65]]]);
myMap.geoObjects.add(polygon);
var objectsInsidePolygon = result.searchInside(polygon);

// 2. IGeometry.
var objectsInsideGeometry = result.searchInside(polygon.geometry);

// 3. Карта.
// Найдем объекты, целиком лежащие в видимой области карты.
var visibleObject = result.searchInside(myMap);

2.

// Пример использования при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Иваново'))
        .setOptions('visible', false)
        .addToMap(myMap);
// Дождемся ответа от сервера и покажем объекты, попадающие в видимую область карты.
result.then(function () {
    result.searchInside(myMap).setOptions('visible', true);
});

searchIntersect

{GeoQueryResult} searchIntersect(object[, options])

Метод, создающий новую выборку из объектов, пересекающих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов.

Возвращает новую выборку, содержащую искомые объекты.

Параметры:

Параметр

Значение по умолчанию

Описание

object*

Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:

  • IGeoObject - объект, реализующий интефейс IGeoObject;
  • IGeometry - объект, реализующий интерфейс IGeometry;
  • Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;

options

Тип: Object

Опции.

options.considerOccurance

true

Тип: Object

Флаг, показывающий, считаем ли мы пересечением, когда одна фигура полностью содержится в другой.

* Обязательный параметр/опция.

Примеры:

1.

// Примеры использования метода при различных входных данных.
var result = ymaps.geoQuery(objects).addToMap(myMap);

// 1. IGeoObject.
var polygon = new ymaps.Polygon([[[35, 65], [35, 66], [34, 62], [34, 63], [35, 65]]]);
myMap.geoObjects.add(polygon);
var objectsIntersectPolygon = result.searchIntersect(polygon);

// 2. IGeometry.
var objectsIntersectGeometry = result.searchIntersect(polygon.geometry);

// 3. Карта.
// При этом будем искать только объекты, пересекающие непосредственно
// границы карты. То есть объекты, попадающие целиком в видимую область карты,
// не попадут в финальную выборку.
var objectsIntersectMapBounds = result.searchIntersect(myMap, {considerOccurance: false});

2.

// Пример использования при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('cafe'))
        .setOptions('visible', false)
        .addToMap(myMap);

// Дождемся ответа от сервера перед обработкой результатов.
result.then(function () {
    result.searchIntersect(myMap).setOptions('visible', true);
});

setOptions

{GeoQueryResult} setOptions(key[, value])

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

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

key*

Тип: String|Object

Название опции или хэш с опциями и их значениями.

value

Тип: Object

Значение опции.

* Обязательный параметр/опция.

Пример:

var result = ymaps.geoQuery(placemarks);
// Сделаем видимыми элементы, попадающие в прямоугольную область.
result.searchIntersect(myBounds).setOptions('visible', true);

// Зададим опции с помощью хэша.
result.setOptions({zIndex: 10, fillColor: '#ff0005'});

setProperties

{GeoQueryResult} setProperties(path, value)

Метод, позволяющий задать значение поля properties всем элементам выборки.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

path*

Тип: String

Имя поля, которому присваивается значение. Может содержать ".".

value*

Тип: Object

Значение поля.

* Обязательный параметр/опция.

Пример:

var result = ymaps.geoQuery(objects);
// Пометим элементы, попадающие в области.
result.searchIntersect(myBounds1).setProperties('intersectBounds', true);
result.searchIntersect(myBounds2).setProperties('intersectBounds', true);
// ...
result.search('properties.intersectBounds = true').addToMap(myMap);

slice

{GeoQueryResult} slice(begin[, end])

Метод, возвращающий срез выборки.

Возвращает новую выборку, содержающую элементы среза.

Параметры:

Параметр

Значение по умолчанию

Описание

begin*

Тип: Number

Индекс начального элемента в срезе.

end

Тип: Number

Индекс элемента в выборке, на котором срез завершится. При этом последним в новом срезе будет элемент с индексом end-1.

* Обязательный параметр/опция.

Примеры:

1.

// Выполним срез при синхронной обработке.
var result = ymaps.geoQuery(map.geoObjects).slice(0, 10);
alert('Количество элементов в новой выборке:' + result.getLength());

2.

// Взятие среза при асинхронной обработке.
var result = ymaps.geoQuery(ymaps.geocode('кафе Москва')).slice(0, 10);
// Сразу после запроса результат еще не готов.
alert('Пока выборка пуста. Количество элементов в выборке: ' + result.getLength());
// Дождемся готовности результата и посмотрим, сколько элементов будет в выборке.
result.then(function () {
    alert('Ответ получен. Количество данных в выборке: ' + result.getLength());
});

sort

{} sort(comparator)

Метод для сортировки объектов выборки. Не изменяет исходную выборку, а создает новую, содержащую упорядоченные объекты.

Параметры:

Параметр

Значение по умолчанию

Описание

comparator*

Тип: String|Function

Строка с шаблоном сортировки или функция-компаратор. Строка-шаблон может быть представлена в виде ' [=asc]'. Возможные значения :

  • 'lat' - широта. Поддерживается только для точечных объектов;
  • 'lng', 'long' - долгота. Поддерживается только для точечных объектов;
  • 'x' - глобальные пиксельные координаты по оси x. Поддерживается только для точечных объектов;
  • 'y' - глобальные пиксельные координаты по оси y. Поддерживается только для точечных объектов;
  • 'geometry.type' - тип геометрии. Результат выполнения метода geometry.getType().
  • 'geometry.coordinates.' - координаты. Результат выполнения метода geometry.getCoordinates(). Для получения доступа к координате следует указывать ее индексы через точку - 'geometry.coordinates.0.1'.
  • 'properties.' - значение поля данных;
  • 'options.' - значение опций.
    Возможные значения необязательного параметра :
    parameter:
  • 'asc' - сортировка по возрастанию;
  • 'desc' - сортировка по убыванию.
    Функция-компаратор принимает на вход два элемента выборки. Возвращаемые значения: если первый объект больше второго, функция возвращает значение > 0. Если первый объект равен второму, функция возвращает 0. Если первый объект меньше второго, функция возвращает значение < 0.

* Обязательный параметр/опция.

Пример:

// Пример использования searchContaining при синхронных операциях.
var result = ymaps.geoQuery(myMap.geoObjects);
result.sort('lat').sort('x')
    .sort('properties.name desc')
    .sort('options.preset')
    .sort(function (a, b) {
        if (a.properties.get('name') == b.properties.get('name')) {
            return a.geometry.getCoordinates()[0] - b.geometry.getCoordinates()[0];
        } else {
            return (a.properties.get('name') > b.properties.get('name')) ? 1 : -1;
        }
    });

sortByDistance

{GeoQueryResult} sortByDistance(object)

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

Возвращает новую упорядоченную выборку.

Параметры:

Параметр

Значение по умолчанию

Описание

object*

Тип: Object

Объект, до которого будет считаться расстояние. Может принимать следующие значения:

  • IGeoObject - объект, реализующий интефейс IGeoObject;
  • IGeometry - объект, реализующий интерфейс IGeometry;
  • Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
  • Number[] - координаты точки;
  • Number[][] - координаты прямоугольной области;
  • Object - Json-описание геометрии. Содержит поля type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule.

* Обязательный параметр/опция.

Примеры:

1.

// Примеры использования метода при различных входных данных.
var result = ymaps.geoQuery(objects).addToMap(myMap);

// 1. IGeoObject.
var polyline = new ymaps.Polyline([[35, 65], [35, 66], [34, 62], [34, 63]]);
myMap.geoObjects.add(polyline);
var sortedByPolyline = result.sortByDistance(polyline);

// 2. IGeometry.
var sortedByGeometry = result.sortByDistance(placemark.geometry);

// 3. Map.
var sortedByMapBounds = result.sortByDistance(myMap);

// 4. Выборка, отсортированная по точке.
var sortedByPoint = result.sortByDistance([34, 53]);

2.

// Пример использования при асинхронных операциях.
var result = ymaps.geoQuery(ymaps.geocode('Париж')).addToMap(myMap).sortByDistance([45, 64]);
// Дождемся ответа от сервера и получим ближайший и наиболее удаленный
// объект по отношению к точке.
result.then(function () {
    alert('Ближайший объект имеет координаты ' + result.get(0).geometry.getCoordinates());
    alert('Наиболее удаленный объект имеет координаты ' + result.get(result.getLength() - 1).geometry.getCoordinates());
});

then

{GeoQueryResult} then([onFulfill[, onReject, context)

Подписка на "обещание".

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

onFulfill

Тип: Function

Функция-обработчик, которая вызывается, если обещание выполнено.

onReject

Тип: Function

Функция-обработчик, которая вызывается, если обещание не выполнено (произошла ошибка).

context*

Тип: Object

Контекст выполнения функции-обработчика.

* Обязательный параметр/опция.

Пример:

var result = ymaps.geoQuery(ymaps.geocode('река Лена'));
result.then(function () {
    alert('Количество найденных объектов: ' + result.getLength());
}, function () {
    alert('Произошла ошибка.');});

unsetOptions

{GeoQueryResult} unsetOptions(keys)

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

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

keys*

Тип: String|String

Название или массив названий опций, которые должны быть аннулированы.

* Обязательный параметр/опция.

Пример:

result.unsetOptions('visible');

unsetProperties

{GeoQueryResult} unsetProperties(path)

Метод позволяющий обнулить значение поля properties у всех элементов выборки.

Возвращает ссылку на себя.

Параметры:

Параметр

Значение по умолчанию

Описание

path*

Тип: String

Имя поля, значение которого нужно обнулить. Может содержать ".".

* Обязательный параметр/опция.

Пример:

var result = ymaps.geoQuery(objects);
// Пометим элементы, попадающие в первую область, но не попадающие во вторую.
result.searchIntersect(myBounds1).setProperties('intersectBounds', true);
result.searchIntersect(myBounds2).unsetProperties('intersectBounds', true);
// ...
result.search('properties.intersectBounds = true').addToMap(myMap);
Предыдущая
Следующая