Использование опции ограничения области просмотра карты

Open in CodeSandbox

Бывают случаи, когда необходимо ограничить видимую область карты, чтобы у пользователей не было возможности выйти за её пределы.

Для таких случаев у карты есть опция «restrictMapArea», которая может принимать в качестве входных параметров прямоугольную область, либо булево значение. В случае «true» пользователь не сможет выйти за пределы изначальной видимой области карты.

С подробным описанием опции можно ознакомиться здесь.

Если недостаточно просто ограничить область просмотра прямоугольником и необходимо решить более сложную задачу (например, запретить центру карты выходить за пределы какого-либо полигона), то с помощью map.action.Manager.setCorrection, можно задать функцию, которая будет корректировать действия пользователя на карте.

<!DOCTYPE html>
<html>
    <head>
        <title>
            Использование опции ограничения области просмотра карты
        </title>
        <meta
            http-equiv="Content-Type"
            content="text/html; charset=utf-8"
        />
        <!--
        Укажите свой API-ключ. Тестовый ключ НЕ БУДЕТ работать на других сайтах.
        Получить ключ можно в Кабинете разработчика: https://developer.tech.yandex.ru/keys/
    -->
        <script
            src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=<ваш API-ключ>"
            type="text/javascript"
        ></script>
        <script src="restrict_map_area.js" type="text/javascript"></script>
        <style>
            html,
            body,
            #map {
                width: 100%;
                height: 100%;
                padding: 0;
                margin: 0;
            }
        </style>
    </head>
    <body>
        <div id="map"></div>
    </body>
</html>
ymaps.ready(function () {
    var myMap = new ymaps.Map(
        "map",
        {
            center: [59.938, 30.3],
            zoom: 9,
            controls: ["smallMapDefaultSet"],
        },
        {
            // Зададим ограниченную область прямоугольником,
            // примерно описывающим Санкт-Петербург.
            restrictMapArea: [
                [59.838, 29.511],
                [60.056, 30.829],
            ],
        }
    );
});