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

# ICoordSystem

Интерфейс координатной системы карты. Этот интерфейс необходимо реализовать в случае использования нестандартных (например, цилиндрических) координат. Для решения задач поиска траектории движения по земной поверхности, используйте [coordSystem.geo](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/coordSystem.geo.md), по декартовой плоскости — [coordSystem.cartesian](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/coordSystem.cartesian.md).

**См.:** [coordSystem.geo](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/coordSystem.geo.md)[coordSystem.cartesian](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/coordSystem.cartesian.md)

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

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

```javascript
ICoordSystem()
```

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

#|
|| **Имя** | **Возвращает** | **Описание** ||
|| [getDistance](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#getDistance)([point1](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#getDistance-param-point1), [point2](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#getDistance-param-point2)) | Number | Возвращает кратчайшее (вдоль геодезической линии) расстояние между двумя заданными точками (в метрах). ||
|| [solveDirectProblem](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveDirectProblem)([startPoint](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveDirectProblem-param-startPoint), [direction](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveDirectProblem-param-direction), [distance](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveDirectProblem-param-distance)) | Object | Решает так называемую первую (прямую) [геодезическую задачу](http://en.wikipedia.org/wiki/Geodesy#Geodetic_problems): где мы окажемся, если выйдем из указанной точки в указанном направлении и пройдём, не сворачивая, указанное расстояние. Решением прямой геодезической задачи являются следующие данные:
- конечная точка,
- конечное направление,
- функция пути,
- функция, позволяющая для произвольного момента времени указать, в какой точке мы будем находиться и в каком направлении двигаться. ||
|| [solveInverseProblem](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveInverseProblem)([startPoint](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveInverseProblem-param-startPoint), [endPoint](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveInverseProblem-param-endPoint)[, [reverseDirection](https://yandex.com.tr/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/ICoordSystem.md#solveInverseProblem-param-reverseDirection)]) | Object | Решает так называемую вторую (обратную) [геодезическую задачу](http://en.wikipedia.org/wiki/Geodesy#Geodetic_problems): построить кратчайший маршрут между двумя точками на картографируемой поверхности и определелить расстояние и направление движения. Обратите внимание: на карте земной поверхности кратчайшие маршруты изображаются кривыми линиями. Для геообъектов в API можно включить режим отображения кратчайших расстояний между точками с помощью опции geodesic. ||
|#

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

### getDistance {#getDistance}

```javascript
{Number} getDistance(point1, point2)
```

**Возвращает** кратчайшее (вдоль геодезической линии) расстояние между двумя заданными точками (в метрах).

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

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

Первая точка. ||
|| [`point2`](#getDistance-param-point2)[*](*star) | — | Тип: Number[]

Вторая точка. ||
|#

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

**Пример:**

```javascript
// Расчет расстояния между Москвой и Нью-Йорком.
// Координаты Москвы
ymaps.geocode('Москва').then(function (res) {
    var moscowCoords = res.geoObjects.get(0).geometry.getCoordinates();
    // Координаты Нью-Йорка
    ymaps.geocode('Нью-Йорк').then(function (res) {
        var newYorkCoords = res.geoObjects.get(0).geometry.getCoordinates();
        // Расстояние
        alert(ymaps.formatter.distance(
            ymaps.coordSystem.geo.getDistance(moscowCoords, newYorkCoords)
        ));
    });
});
```

### solveDirectProblem {#solveDirectProblem}

```javascript
{Object} solveDirectProblem(startPoint, direction, distance)
```

Решает так называемую первую (прямую) [геодезическую задачу](http://en.wikipedia.org/wiki/Geodesy#Geodetic_problems): где мы окажемся, если выйдем из указанной точки в указанном направлении и пройдём, не сворачивая, указанное расстояние. Решением прямой геодезической задачи являются следующие данные:
- конечная точка,
- конечное направление,
- функция пути,
- функция, позволяющая для произвольного момента времени указать, в какой точке мы будем находиться и в каком направлении двигаться.

**Возвращает** объект, содержащий следующие поля:
- startPoint - начальная точка в геокоординатах,
- startDirection - начальное направление движения,
- endPoint - конечная точка в геокоординатах,
- endDirection - конечное направление движения,
- distance - расстояние в метрах,
- pathFunction — функция, принимающая число от 0 до 1 (доля пройденного пути) и возвращающая структуру с полями point и direction.

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

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

Точка отправления. ||
|| [`direction`](#solveDirectProblem-param-direction)[*](*star) | — | Тип: Number[]

Направление. Задаётся в виде вектора (приращение координат) [dlat, dlon] либо [dlon, dlat], в завивимости от параметра coordorder. Для того чтобы получить из заданного таким образом направления азимут (угол между направлением движения и направлением на север), необходимо вычислить арктангенс величины dlon/dlat (в JavaScript — стандартная функция Math.atan2(dlon, dlat)). Для того чтобы по известному азимуту "a" вычислить направление движения, нужно положить dlat = cos(a), dlon = sin(a). ||
|| [`distance`](#solveDirectProblem-param-distance)[*](*star) | — | Тип: Number

Пройденное расстояние в метрах. ||
|#

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

**Пример:**

```javascript
// Допустим, мы вылетели из аэропорта Домодедово на северо-восток и
// пролетели 200 километров по прямой. // Изобразим наш путь с помощью меток на карте.

// Найдём с помощью геокодирования координаты начальной точки.
ymaps.geocode('Domodedovo airport').then(function (res) {
    var startPoint = res.geoObjects.get(0).geometry.getCoordinates();
    // Движемся на северо-восток, азимут 45 градусов
    // или pi/4 радиан.
   var azimuth = Math.PI / 4;
   // Направление движения.
   var direction = [Math.cos(azimuth), Math.sin(azimuth)],
   // Путевая функция.
   var path = ymaps.coordSystem.geo
            .solveDirectProblem(startPoint, direction, 2e5).pathFunction;

    // Изобразим путь на карте с помощью меток,
    // проставленных через каждые 10 км.
    for (var i = 0; i <= 20; i++) {
        map.geoObjects.add(new ymaps.Placemark(path(i/20).point));
    }
});
```

### solveInverseProblem {#solveInverseProblem}

```javascript
{Object} solveInverseProblem(startPoint, endPoint[, reverseDirection])
```

Решает так называемую вторую (обратную) [геодезическую задачу](http://en.wikipedia.org/wiki/Geodesy#Geodetic_problems): построить кратчайший маршрут между двумя точками на картографируемой поверхности и определелить расстояние и направление движения. Обратите внимание: на карте земной поверхности кратчайшие маршруты изображаются кривыми линиями. Для геообъектов в API можно включить режим отображения кратчайших расстояний между точками с помощью опции geodesic.

**Возвращает** объект, содержащий следующие поля:
- startPoint - начальная точка в геокоординатах,
- startDirection - начальное направление движения,
- endPoint - конечная точка в геокоординатах,
- endDirection - конечное направление движения,
- distance - расстояние в метрах,
- pathFunction - функция пути, принимающая число от 0 до 1 (доля пройденного пути) и возвращающая структуру с полями point и direction.

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

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

Точка отправления. ||
|| [`endPoint`](#solveInverseProblem-param-endPoint)[*](*star) | — | Тип: Number[]

Точка прибытия. ||
|| [`reverseDirection`](#solveInverseProblem-param-reverseDirection) | false | Тип: Boolean

Направление движения. false - выбрать кратчайшую дугу, true - выбрать обратную кратчайшей. ||
|#

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

**Пример:**

```javascript
// Строительство кратчайшего маршрута из Калининграда во Владивосток.
// Найдём координаты Калининграда
ymaps.geocode('Калининград').then(function (res) {
    var startPoint = res.geoObjects.get(0).geometry.getCoordinates();
    // Найдём координаты Владивостока.
    ymaps.geocode('Владивосток').then(function (res) {
        var endPoint = res.geoObjects.get(0).geometry.getCoordinates(),
        // Найдём функцию пути между двумя точками.
        path = ymaps.coordSystem.geo
            .solveInverseProblem(startPoint, endPoint).pathFunction;
        // Изобразим путь 20-ю точками.
        for (var i = 0; i <= 20; i++) {
            // Находим промежуточную точку.
            var position = path(i/20).point;
            // Добавим в промежуточную точку метку.
            map.geoObjects.add(new ymaps.Placemark(position, {
                    // Покажем в контенте метки пройденное расстояние.
                    iconContent: ymaps.formatter.distance(
                        ymaps.coordSystem.geo.getDistance(startPoint, position)
                    )
                }, {
                    preset: 'islands#redStretchyIcon'
                }
            ));
        }
    });
});
```

<!-- XLIFF_FARM_ZjFmYWEw_CACHING -->

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