---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com.tr/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/GeoQueryResult.md
  - https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/llms.txt

# GeoQueryResult

Расширяет [IPromiseProvider](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IPromiseProvider.md).

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

[Конструктор](#constructor-summary) | [Методы ](#methods-summary)

## Конструктор {#constructor-summary}

```javascript
GeoQueryResult(source)
```

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`source`](#param-source)[*](*star) | — | Тип: 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.**

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

**2.**

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

**3.**

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

**4.**

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

**5.**

```javascript
//  Создание 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());
```

## Методы {#methods-summary}

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [add](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#add)([source](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#add-param-source)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Добавляет объекты из источника к объектам результата. Не изменяет исходный объект, а создает новый, содержащий объединенный набор геообъектов. ||
|| [addEvents](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addEvents)([events](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addEvents-param-events), [callback](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addEvents-param-callback), [context](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addEvents-param-context)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Навешивает обработчики событий на элементы выборки. ||
|| [addTo](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addTo)([collection](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addTo-param-collection)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод для добавления объектов в коллекцию геообъектов. ||
|| [addToMap](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addToMap)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#addToMap-param-map)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод для добавления объектов на карту. ||
|| [applyBoundsToMap](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#applyBoundsToMap)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#applyBoundsToMap-param-map)[, [options](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#applyBoundsToMap-param-options)]) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, позволяющий установить видимую область карты так, чтобы видны были все объекты из выборки. ||
|| [clusterize](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#clusterize)(\[[options](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#clusterize-param-options)]) | [Clusterer](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Clusterer.md) | Метод создает кластеризатор и добавляет в него объекты из выборки. В случае, если данные выборки еще не готовы, они будут добавлены в кластеризатор сразу после обработки, а возвращенный кластеризатор изначально будет пуст. В кластеризатор будут добавлены только объекты с геометрией "Point". ||
|| [each](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#each)([callback](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#each-param-callback), [context](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#each-param-context)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Возвращает ссылку на себя. ||
|| [get](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#get)([index](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#get-param-index)) | [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md) | Возвращает элемент выборки по индексу. ||
|| [getBounds](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getBounds)() | Number[][]\|null | Возвращает географические координаты области, охватывающей объекты результата. ||
|| [getCenter](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getCenter)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getCenter-param-map)) | Number[] | Метод, возвращающий центр области, охватывающей объекты результата, в географических координатах. ||
|| [getCentralObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getCentralObject)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getCentralObject-param-map)) | [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md)\|null | Метод для получения объекта, наиболее близкого к центру видимой области карты. ||
|| [getClosestTo](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getClosestTo)([object](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getClosestTo-param-object)) | [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md)\|null | Метод, возвращающий объект выборки, ближайший к указанному. Если на вход подается объект, уже находящийся в выборке, то вернется другой объект выборки, ближайший к указанному. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов. ||
|| [getExtreme](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getExtreme)([key](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getExtreme-param-key)) | Number | Возвращает максимальные и минимальные значения координат среди координат объектов выборки. ||
|| [getExtremeObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getExtremeObject)([key](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getExtremeObject-param-key)) | [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md) | Метод, возвращающий объект с минимальной или максимальной координатой среди координат объектов выборки. ||
|| [getGlobalPixelBounds](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getGlobalPixelBounds)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getGlobalPixelBounds-param-map)) | Number[][]\|null | Метод, возвращающий глобальные пиксельные координаты области для текущего зума карты. ||
|| [getGlobalPixelCenter](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getGlobalPixelCenter)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getGlobalPixelCenter-param-map)) | Number[] | Возвращает центр области, охватывающей объекты результата, в глобальных пиксельных координатах для текущего зума карты. ||
|| [getIterator](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getIterator)() | [IIterator](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IIterator.md) | Возвращает итератор по объектам результата. ||
|| [getLength](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getLength)() | Number | Возвращает количество элементов в результате. ||
|| [getMaxZoom](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getMaxZoom)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getMaxZoom-param-map)[, [options](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getMaxZoom-param-options)]) | Number | Метод, вычисляющий максимальный коэффициент масштабирования, при котором в видимую область карты попадают все объекты. ||
|| [getParent](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#getParent)() | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md)\|null | Возвращает ссылку на родительскую выборку, если текущая выборка была создана в результате изменения другого объекта GeoQueryResult. ||
|| [indexOf](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#indexOf)([item](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#indexOf-param-item)) | Number | Возвращает индекс элемента в выборке. Если элемент не найден, возвращается -1. ||
|| [intersect](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#intersect)([result](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#intersect-param-result)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод создает новую выборку, содержащую общие элементы для двух других выборок. ||
|| [isReady](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#isReady)() | Boolean | Возвращает признак, готовы результаты выборки или еще обрабатываются. ||
|| [map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#map)([callback](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#map-param-callback)[, [context](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#map-param-context)]) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, вызывающий метод callback для всех элементов выборки и формирующий новую выборку на основе полученных результатов. ||
|| [remove](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#remove)([objects](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#remove-param-objects)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Удаляет объекты из результата. Не изменяет исходный объект, а создает новый, содержащий результирующий набор геообъектов. ||
|| [removeEvents](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeEvents)([events](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeEvents-param-events), [callback](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeEvents-param-callback), [context](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeEvents-param-context)) | | Удаляет подписку на событие с объекта. Обратите внимание, что для корректной отписки передаваемые аргументы должны быть точно такие же, как при подписке через метод addEvents. ||
|| [removeFrom](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeFrom)([collection](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeFrom-param-collection)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод для удаления объектов из коллекции. ||
|| [removeFromMap](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeFromMap)([map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#removeFromMap-param-map)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод для удаления объектов с карты. ||
|| [reverse](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#reverse)() | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Переставляет элементы выборки в обратном порядке и возвращает новую выборку. ||
|| [search](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#search)([condition](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#search-param-condition)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод для поиска объектов выбоки, удовлетворяющих условиям. ||
|| [searchContaining](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchContaining)([object](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchContaining-param-object)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, создающий новую выборку из объектов, содержащих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов. ||
|| [searchInside](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchInside)([object](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchInside-param-object)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, создающий новую выборку из объектов, целиком входящих в указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов. ||
|| [searchIntersect](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchIntersect)([object](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchIntersect-param-object)[, [options](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#searchIntersect-param-options)]) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, создающий новую выборку из объектов, пересекающих указанный объект. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов. ||
|| [setOptions](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setOptions)([key](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setOptions-param-key)[, [value](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setOptions-param-value)]) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, позволяющий задать значение опций всем элементам выборки. ||
|| [setProperties](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setProperties)([path](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setProperties-param-path), [value](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#setProperties-param-value)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, позволяющий задать значение поля properties всем элементам выборки. ||
|| [slice](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#slice)([begin](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#slice-param-begin)[, [end](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#slice-param-end)]) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, возвращающий срез выборки. ||
|| [sort](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#sort)([comparator](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#sort-param-comparator)) | | Метод для сортировки объектов выборки. Не изменяет исходную выборку, а создает новую, содержащую упорядоченные объекты. ||
|| [sortByDistance](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#sortByDistance)([object](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#sortByDistance-param-object)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, позволяющий получить выборку, содержащую объекты, отсортированные по расстоянию до указанного объекта. Обратите внимание, что многие геообъекты требуют добавления на карту для корректных расчетов. Не изменяет исходную выборку. ||
|| [then](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#then)([[onFulfill](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#then-param-onFulfill)[, [onReject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#then-param-onReject), [context](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#then-param-context)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Подписка на "обещание". ||
|| [unsetOptions](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#unsetOptions)([keys](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#unsetOptions-param-keys)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод, позволяющий обнулять значение опций всем элементам выборки. ||
|| [unsetProperties](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#unsetProperties)([path](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md#unsetProperties-param-path)) | [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md) | Метод позволяющий обнулить значение поля properties у всех элементов выборки. ||
|#

## Описание методов {#method_detail}

### add {#add}

```javascript
{GeoQueryResult} add(source)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`source`](#add-param-source)[*](*star) | — | Тип: 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.**

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

**2.**

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

**3.**

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

**4.**

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

**5.**

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

### addEvents {#addEvents}

```javascript
{GeoQueryResult} addEvents(events, callback, context)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`events`](#addEvents-param-events)[*](*star) | — | Тип: String\|String[]

Тип или массив типов событий, на которые совершается подписка. ||
|| [`callback`](#addEvents-param-callback)[*](*star) | — | Тип: Function

Функция-обработчик. ||
|| [`context`](#addEvents-param-context)[*](*star) | — | Тип: Object

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

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

**Пример:**

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

### addTo {#addTo}

```javascript
{GeoQueryResult} addTo(collection)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`collection`](#addTo-param-collection)[*](*star) | — | Тип: [ICollection](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICollection.md)

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

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

**Пример:**

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

### addToMap {#addToMap}

```javascript
{GeoQueryResult} addToMap(map)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#addToMap-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

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

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

**Пример:**

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

### applyBoundsToMap {#applyBoundsToMap}

```javascript
{GeoQueryResult} applyBoundsToMap(map[, options])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#applyBoundsToMap-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

Карта. ||
|| [`options`](#applyBoundsToMap-param-options) | — | Тип: Object

Опции. ||
|| [`options.checkZoomRange`](#applyBoundsToMap-param-options.checkZoomRange) | false | Тип: Boolean

Проверка возможности установить указанный коэффициент масштабирования. Если значение опции равно true, метод вызывается асинхронно. Производится обращение к серверу, который возвращает интервал допустимых для данного центра значений коэффициентов масштабирования. После этого выставляется указанный центр и корректный зум. ||
|| [`options.duration`](#applyBoundsToMap-param-options.duration) | 0 | Тип: Number

Время анимации в миллисекундах. ||
|| [`options.preciseZoom`](#applyBoundsToMap-param-options.preciseZoom) | false | Тип: Boolean

Возможность использования дробных коэффициентов масштабирования. ||
|| [`options.timingFunction`](#applyBoundsToMap-param-options.timingFunction) | 'linear' | Тип: String

Тайминг-функция. Аналогично значению CSS свойства transition-timing-function. Полный список значений: [http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag](http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag) ||
|| [`options.useMapMargin`](#applyBoundsToMap-param-options.useMapMargin) | true | Тип: Boolean

Нужно ли учитывать отступы карты [map.margin.Manager](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/map.margin.Manager.md). ||
|| [`options.zoomMargin`](#applyBoundsToMap-param-options.zoomMargin) | 0 | Тип: Number\|Number[]

Отступы от границ видимой области карты. Если задано одно число - оно применяется ко всем сторонам. Если задано два - то это горизонтальные и вертикальные отступы соответственно. Если задан массив из 4х чисел, то это отступы top, right, bottom, left. При включенной опции "useMapMargin" значение "zoomMargin" складывается со значениями, которые были рассчитаны в менеджере отступов [map.margin.Manager](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/map.margin.Manager.md). ||
|#

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

**Примеры:**

**1.**

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

**2.**

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

### clusterize {#clusterize}

```javascript
{Clusterer} clusterize([options])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`options`](#clusterize-param-options) | — | Тип: Object

Опции, передаваемые в конструктор объекта [Clusterer](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Clusterer.md). ||
|#


**Пример:**

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

### each {#each}

```javascript
{GeoQueryResult} each(callback, context)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`callback`](#each-param-callback)[*](*star) | — | Тип: Function

Функция-обработчик. Вызывается для каждого элемента выборки и получает его на вход. ||
|| [`context`](#each-param-context)[*](*star) | — | Тип: Object

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

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

**Пример:**

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

### get {#get}

```javascript
{IGeoObject} get(index)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`index`](#get-param-index)[*](*star) | — | Тип: Number

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

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

**Примеры:**

**1.**

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

**2.**

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

### getBounds {#getBounds}

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

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

**Примеры:**

**1.**

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

**2.**

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

### getCenter {#getCenter}

```javascript
{Number[]} getCenter(map)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#getCenter-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

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

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

**Пример:**

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

### getCentralObject {#getCentralObject}

```javascript
{IGeoObject|null} getCentralObject(map)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#getCentralObject-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

Карта. ||
|#

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

**Примеры:**

**1.**

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

**2.**

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

### getClosestTo {#getClosestTo}

```javascript
{IGeoObject|null} getClosestTo(object)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`object`](#getClosestTo-param-object)[*](*star) | — | Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:
- IGeoObject - объект, реализующий интефейс [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md);
- IGeometry - объект, реализующий интерфейс [IGeometry](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeometry.md);
- Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
- Number[] - координаты точки;
- Object - Json-описание геометрии. Содержит поля type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule. ||
|#

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

**Примеры:**

**1.**

```javascript
// Примеры использования метода при различных входных данных.
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.**

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

### getExtreme {#getExtreme}

```javascript
{Number} getExtreme(key)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`key`](#getExtreme-param-key)[*](*star) | — | Тип: String

Ключ для получения данных. Может принимать следующие значения:
- top;
- right;
- bottom;
- left. ||
|#

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

**Примеры:**

**1.**

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

**2.**

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

### getExtremeObject {#getExtremeObject}

```javascript
{IGeoObject} getExtremeObject(key)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`key`](#getExtremeObject-param-key)[*](*star) | — | Тип: String

Ключ для поиска объекта. Может принимать следующие значения:
- top;
- right;
- bottom;
- left. ||
|#

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

**Примеры:**

**1.**

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

**2.**

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

### getGlobalPixelBounds {#getGlobalPixelBounds}

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

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#getGlobalPixelBounds-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

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

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

**Пример:**

```javascript
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 {#getGlobalPixelCenter}

```javascript
{Number[]} getGlobalPixelCenter(map)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#getGlobalPixelCenter-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

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

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

**Пример:**

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

### getIterator {#getIterator}

```javascript
{IIterator} getIterator()
```

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

**Примеры:**

**1.**

```javascript
// Использование итератора с синхронными операциями.
// Поиск элементов, соответствующих координатам щелчка.
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.**

```javascript
// Использование итератора при асинхронных операциях.
// Создадим результат из запроса к геокодеру.
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 {#getLength}

```javascript
{Number} getLength()
```

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

**Примеры:**

**1.**

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

**2.**

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

### getMaxZoom {#getMaxZoom}

```javascript
{Number} getMaxZoom(map[, options])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#getMaxZoom-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

Карта, для которой ведется расчет. ||
|| [`options`](#getMaxZoom-param-options) | — | Тип: Object

Опции. ||
|| [`options.useMapMargin`](#getMaxZoom-param-options.useMapMargin) | true | Тип: Boolean

Нужно ли учитывать отступы карты [map.margin.Manager](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/map.margin.Manager.md). ||
|#

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

**Пример:**

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

### getParent {#getParent}

```javascript
{GeoQueryResult|null} getParent()
```

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

**Пример:**

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

### indexOf {#indexOf}

```javascript
{Number} indexOf(item)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`item`](#indexOf-param-item)[*](*star) | — | Тип: [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md)

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

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

**Пример:**

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

### intersect {#intersect}

```javascript
{GeoQueryResult} intersect(result)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`result`](#intersect-param-result)[*](*star) | — | Тип: [GeoQueryResult](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/GeoQueryResult.md)

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

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

**Примеры:**

**1.**

```javascript
// Пример пересечения при синхронных операциях.
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.**

```javascript
// Пример пересечения при асинхронных операциях.
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 {#isReady}

```javascript
{Boolean} isReady()
```

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

**Пример:**

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

### map {#map}

```javascript
{GeoQueryResult} map(callback[, context])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`callback`](#map-param-callback)[*](*star) | — | Тип: Function

Функция-обработчик. Принимает на вход элемент выборки. Возвращает экземпляр [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md). ||
|| [`context`](#map-param-context) | — | Тип: Object

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

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

**Пример:**

```javascript
// Добавим на карту только объекты-окружности.
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 {#remove}

```javascript
{GeoQueryResult} remove(objects)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`objects`](#remove-param-objects)[*](*star) | — | Тип: Object

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

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

**Примеры:**

**1.**

```javascript
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.**

```javascript
// Удаление из 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.**

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

**4.**

```javascript
// Удаление из 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}

```javascript
{} removeEvents(events, callback, context)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`events`](#removeEvents-param-events)[*](*star) | — | Тип: String\|String[]

Тип или массив типов событий, на которые была сделана подписка. ||
|| [`callback`](#removeEvents-param-callback)[*](*star) | — | Тип: Function

Функция-обработчик, которую указали при подписке. ||
|| [`context`](#removeEvents-param-context)[*](*star) | — | Тип: Object

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

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

**Пример:**

```javascript
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 {#removeFrom}

```javascript
{GeoQueryResult} removeFrom(collection)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`collection`](#removeFrom-param-collection)[*](*star) | — | Тип: [ICollection](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICollection.md)

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

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

**Пример:**

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

### removeFromMap {#removeFromMap}

```javascript
{GeoQueryResult} removeFromMap(map)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`map`](#removeFromMap-param-map)[*](*star) | — | Тип: [Map](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/Map.md)

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

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

**Пример:**

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

### reverse {#reverse}

```javascript
{GeoQueryResult} reverse()
```

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

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

**Примеры:**

**1.**

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

**2.**

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

### search {#search}

```javascript
{GeoQueryResult} search(condition)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`condition`](#search-param-condition)[*](*star) | — | Тип: String\|Function

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

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

**Примеры:**

**1.**

```javascript
// Пример поиска объектов при синхронных операциях.
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.**

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

### searchContaining {#searchContaining}

```javascript
{GeoQueryResult} searchContaining(object)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`object`](#searchContaining-param-object)[*](*star) | — | Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:
- IGeoObject - объект, реализующий интефейс [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md);
- IGeometry - объект, реализующий интерфейс [IGeometry](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeometry.md);
- Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
- Number[] - координаты точки; Если передан один параметр, трактуется как точка. Если передано два аргумента, трактуется как центр окружности;
- Number[][] - координаты прямоугольной области;
- Object - Json-описания геометрии. ||
|#

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

**Примеры:**

**1.**

```javascript
// Примеры использования метода при различных входных данных.
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.**

```javascript
// Пример использования при асинхронных операциях.
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 {#searchInside}

```javascript
{GeoQueryResult} searchInside(object)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`object`](#searchInside-param-object)[*](*star) | — | Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:
- IGeoObject - объект, реализующий интефейс [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md);
- IGeometry - объект, реализующий интерфейс [IGeometry](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeometry.md);
- Map - карта. В этом случае опорным объектом будет прямоугольная граница карты; ||
|#

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

**Примеры:**

**1.**

```javascript
// Примеры использования метода при различных входных данных.
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.**

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

### searchIntersect {#searchIntersect}

```javascript
{GeoQueryResult} searchIntersect(object[, options])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`object`](#searchIntersect-param-object)[*](*star) | — | Тип: Object

Объект, относительно которого будет производится поиск. Может принимать следующие значения:
- IGeoObject - объект, реализующий интефейс [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md);
- IGeometry - объект, реализующий интерфейс [IGeometry](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeometry.md);
- Map - карта. В этом случае опорным объектом будет прямоугольная граница карты; ||
|| [`options`](#searchIntersect-param-options) | — | Тип: Object

Опции. ||
|| [`options.considerOccurance`](#searchIntersect-param-options.considerOccurance) | true | Тип: Object

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

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

**Примеры:**

**1.**

```javascript
// Примеры использования метода при различных входных данных.
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.**

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

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

### setOptions {#setOptions}

```javascript
{GeoQueryResult} setOptions(key[, value])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`key`](#setOptions-param-key)[*](*star) | — | Тип: String\|Object

Название опции или хэш с опциями и их значениями. ||
|| [`value`](#setOptions-param-value) | — | Тип: Object

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

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

**Пример:**

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

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

### setProperties {#setProperties}

```javascript
{GeoQueryResult} setProperties(path, value)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`path`](#setProperties-param-path)[*](*star) | — | Тип: String

Имя поля, которому присваивается значение. Может содержать ".". ||
|| [`value`](#setProperties-param-value)[*](*star) | — | Тип: Object

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

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

**Пример:**

```javascript
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 {#slice}

```javascript
{GeoQueryResult} slice(begin[, end])
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`begin`](#slice-param-begin)[*](*star) | — | Тип: Number

Индекс начального элемента в срезе. ||
|| [`end`](#slice-param-end) | — | Тип: Number

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

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

**Примеры:**

**1.**

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

**2.**

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

### sort {#sort}

```javascript
{} sort(comparator)
```

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`comparator`](#sort-param-comparator)[*](*star) | — | Тип: String\|Function

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

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

**Пример:**

```javascript
// Пример использования 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 {#sortByDistance}

```javascript
{GeoQueryResult} sortByDistance(object)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`object`](#sortByDistance-param-object)[*](*star) | — | Тип: Object

Объект, до которого будет считаться расстояние. Может принимать следующие значения:
- IGeoObject - объект, реализующий интефейс [IGeoObject](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeoObject.md);
- IGeometry - объект, реализующий интерфейс [IGeometry](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/IGeometry.md);
- Map - карта. В этом случае опорным объектом будет прямоугольная граница карты;
- Number[] - координаты точки;
- Number[][] - координаты прямоугольной области;
- Object - Json-описание геометрии. Содержит поля type и coordinates. При описании круга также необходимо поле radius. При описании многоугольника можно указывать необязательное поле fillRule. ||
|#

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

**Примеры:**

**1.**

```javascript
// Примеры использования метода при различных входных данных.
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.**

```javascript
// Пример использования при асинхронных операциях.
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 {#then}

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

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`onFulfill`](#then-param-onFulfill) | — | Тип: Function

Функция-обработчик, которая вызывается, если обещание выполнено. ||
|| [`onReject`](#then-param-onReject) | — | Тип: Function

Функция-обработчик, которая вызывается, если обещание не выполнено (произошла ошибка). ||
|| [`context`](#then-param-context)[*](*star) | — | Тип: Object

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

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

**Пример:**

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

### unsetOptions {#unsetOptions}

```javascript
{GeoQueryResult} unsetOptions(keys)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`keys`](#unsetOptions-param-keys)[*](*star) | — | Тип: String\|String

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

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

**Пример:**

```javascript
result.unsetOptions('visible');
```

### unsetProperties {#unsetProperties}

```javascript
{GeoQueryResult} unsetProperties(path)
```

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

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

**Параметры:**

#|
|| **Параметр** | **Значение по умолчанию** | **Описание**  ||
|| [`path`](#unsetProperties-param-path)[*](*star) | — | Тип: String

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

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

**Пример:**

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

<!-- XLIFF_FARM_NTY5NGM2_CACHING -->

[*star]: Обязательный параметр.