Клуб API Карт

Ограничить область карты

Пост в архиве.

Добрый день!

Подскажите пожалуйста, можно ли и как ограничить видимую область карты (чтобы не могли двигаться дальше ограниченной зоны), например такой области:

YMaps.GeoBounds(new YMaps.GeoPoint(34.002441,44.898746), new YMaps.GeoPoint(34.196761,45.024033) )

Заранее благодарен!

6 комментариев
слушайте какое-нибудь из событий карты и реагируйте если надо.
вешаетесь на событие сдвига карты, если граница выходит за заданые пределы - двигаете обратно.
Чтобы работало четко и без "рывков" прийдется малек подумать.
В простейшем случае это можно сделать следующим образом:

YMaps.jQuery(function () {
    var map = new YMaps.Map(YMaps.jQuery("#YMapsID"));
    map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);

    var strictBounds = new YMaps.GeoBounds(new YMaps.GeoPoint(37.145122,55.395549), new YMaps.GeoPoint(38.231532,56.089651));
    strictMapBounds(map, strictBounds);
})

function strictMapBounds (map, strictBounds) {
    var center = map.getCenter();

    YMaps.Events.observe(map, map.Events.Move, function (map, e) {
        var bounds = map.getBounds(),
            lb = bounds.getLeftBottom(),
            rt = bounds.getRightTop();

        if (!strictBounds.contains(lb) || !strictBounds.contains(rt)) {
            map.setCenter(center);
        } else {
            center = map.getCenter();
        }                                                                                                                                                                         
    });
}

Эта функция учитывает только перемещение карты, но игнорирует событие изменения масштаба. По аналогии вы можете дописать эту функцию и получить желаемый функционал.
Спасибо большое! для начала мне вполне подойдет такое решение
Дмитрий Сухоносов
28 января 2016, 07:04

да оно толком нерабочее, браузер начинает дико тормозить,


выполнять каждый раз этот код на событие Move очень накладно

Дмитрий Сухоносов
28 января 2016, 07:04
было бы приятно увидеть такую функцию в API Yandex Maps