Страница 1 из 1

OpenLayers bbox

Добавлено: 04 окт 2014, 13:22
Stik
Можно ли в OpenLayers настроить отображение небольшой части карты, чтобы загружался (rendering) не весь мир, а город (область)? Кажется это осуществляется OpenLayers.Bounds. Локально index.htm и подключены OpenLayers и OSM.

Re: OpenLayers bbox

Добавлено: 04 окт 2014, 17:00
Denis Rykov
Можно, посмотрите свойства maxExtent и restrictedExtent

[ Сообщение с мобильного устройства ]

Re: OpenLayers bbox

Добавлено: 05 окт 2014, 02:39
Stik
Ограничил перемещение restrictedExtent, но при зуммировании половина России подгружается. Никакой экономии ресурсов и трафика. Хотелось бы, жесткого ограничения загружаемой территории. Грубо говоря, прямоугольник (box) и ничего лишнего.

Re: OpenLayers bbox

Добавлено: 05 окт 2014, 17:42
Denis Rykov
Если я вас правильно понял, то нужно что-то типа такого:

Код: Выделить всё

var cityBounds = [9309214.53507, 7036210.09355, 9330603.57335, 7058304.62827];
var map = new OpenLayers.Map({
    div: "map",
    restrictedExtent: cityBounds,
    maxExtent: [-20037508.34, -20037508.34, 20037508.34, 20037508.34]
});

var base = new OpenLayers.Layer("", { isBaseLayer: true, displayInLayerSwitcher: false }); 
var osm = new OpenLayers.Layer.OSM("OSM", [
    "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
    "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
    "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
], {
    tileOrigin: new OpenLayers.LonLat(-20037508.34, 20037508.34),
    maxExtent: cityBounds,
    maxResolution: 156543.03390625,
    displayOutsideMaxExtent: false,
    isBaseLayer: false
});
map.addLayers([base, osm]);
map.zoomToExtent(cityBounds);