---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/ICoordSystem.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/llms.txt


# ICoordSystem

Интерфейс координатной системы карты. Этот интерфейс необходимо реализовать в случае использования нестандартных (например, цилиндрических) координат.

**См.:** [coordSystem.geo](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/coordSystem.geo.md)[coordSystem.cartesian](https://yandex.ru/dev/maps/archive/doc/jsapi/2-0/ru/ref/reference/coordSystem.cartesian.md)

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

```javascript
ICoordSystem()
```

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

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

## Описание методов {#description-methods}

### getDistance

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

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

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

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

Первая точка. ||
|| `point2`[*](*parametr) | — | Тип: 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

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

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

• конечная точка,

• конечное направление,

• функция пути,

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

**Returns** объект с полями:

• startPoint - начальная точка в геокоординатах,

• startDirection - начальное направление движения,

• endPoint - конечная точка в геокоординатах,

• endDirection - конечное направление движения,

• distance - расстояние,

• pathFunction - Функция, принимающая число от 0 до 1 (доля пройденного пути) и возвращающая структуру с полями point и direction.

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

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

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

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

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

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

**Пример:**

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

// Найдём с помощью геокодирования координаты начальной точки.
ymaps.geocode('аэропорт Домодедово').then(function (res) {
    var startPoint = res.geoObjects.get(0).geometry.getCoordinates(),
    // Движемся на северо-восток, азимут 45 градусов
    // или pi/4 радиан.
        azimuth = Math.PI / 4,
    // Направление движения
        direction = [Math.sin(azimuth), Math.cos(azimuth)],
    // Путевая функция
        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

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

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

**Returns** объект с полями:

• startPoint - начальная точка в геокоординатах,

• startDirection - начальное направление движения,

• endPoint - конечная точка в геокоординатах,

• endDirection - конечное направление движения,

• distance - расстояние,

• pathFunction - Функция пути, принимающая число от 0 до 1 (доля пройденного пути) и возвращающая структуру с полями point и direction.

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

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

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

Точка прибытия. ||
|| `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: 'twirl#redStretchyIcon'
                }
            ));
        }
    });
});
```

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