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

OpenLayers: не получается задать правильный охват

Добавлено: 15 окт 2012, 19:11
Voltron
Необходимо отобразить слой с сервиса Kosmosnimki.ru в OpenLayers. Слой отдаётся через подобие TMS в EPSG:3395. Известен охват слоя в EPSG:4326, но при попытке вписать в maxExtent это охват, трансформированный в EPSG:3395 получаю пустую страницую
URL слоя

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

http://maps.kosmosnimki.ru/TileService.ashx?Request=gettile&layerName=762F4DD7378243BEA52E74D7DC575A84&apikey=L5VW1QBBHJ&crs=epsg:3395&z=${z}&x=${x}&y=${y}
BBOX слоя

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

<BoundingBox CRS="EPSG:4326" minx="37.5287837756839" miny="55.7157018440489" maxx="37.5905806807989" maxy="55.8564405658025"/>
Файл с картой
test.tar.bz2
(44.22 КБ) 265 скачиваний

Re: OpenLayers: не получается задать правильный охват

Добавлено: 16 окт 2012, 09:41
Denis Rykov
Вроде удалось отобразить указанный слой, вот демо.

Re: OpenLayers: не получается задать правильный охват

Добавлено: 16 окт 2012, 10:02
Voltron
Спасибо! Похоже на требуемый результат, буду разбираться

Re: OpenLayers: не получается задать правильный охват

Добавлено: 16 окт 2012, 11:28
Voltron
Т.к. мне нужен только один слой, убрал в коде загрузку подложки OSM, сделал второй слой основным и теперь он не загружается. Что сломал, куда копать?
Код выглядит так

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

            options = {
                div: "map",
                projection: "EPSG:3857",
                layers: [
                    new OpenLayers.Layer.XYZ(
                        "Съемка GeoEye",
                        "http://maps.kosmosnimki.ru/TileService.ashx?Request=gettile&layerName=762F4DD7378243BEA52E74D7DC575A84&apikey=L5VW1QBBHJ&crs=epsg:3857&z=${z}&x=${x}&y=${y}",
                         {
                             isBaseLayer: true,
                             tileOrigin : new OpenLayers.LonLat(-20037508.34, 20037508.34),
                             maxExtent: scanex.bounds_proj,
                             getXYZ: scanex.getXYZ,
                         }
                    )
                ]
            };
            map = new OpenLayers.Map(options);
            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.zoomToExtent(scanex.bounds_proj);
        }

Re: OpenLayers: не получается задать правильный охват

Добавлено: 16 окт 2012, 12:20
Denis Rykov
Обновил пример.

Re: OpenLayers: не получается задать правильный охват

Добавлено: 26 окт 2012, 08:04
Tink
А не подскажите что делать когда kosmosnimki.ru не отдают тайлы за пределами, например, области (см. теме Layer.OSM избавиться от "пустых" тайлов). Как избавиться от "пустых" тайлов?

Другими словами, я хочу сказать, что когда в слое запрашиваемом у kosmosnimki.ru растр, покрывающий только одну область (не важно какую, - хоть Москву, хоть какую-то деревушку), то за пределами растра куча значков "нет изображения", т.е. kosmosnimki.ru отдает только те тайлы в которые попадает этот растр.

Можно как-то заставить OpenLayers не грузить эти тайлы ?
Отдельным запросом, согласно документации kosmosnimki.ru можно запросить список слоев доступных по тому или иному ключу. С описанием слоя вроде бы есть атрибуты такого вида:
Спойлер
<EX_GeographicBoundingBox>
<westBoundLongitude>
47.11
</westBoundLongitude>
<eastBoundLongitude>
49.92
</eastBoundLongitude>
<southBoundLatitude>
43.43
</southBoundLatitude>
<northBoundLatitude>
44.06
</northBoundLatitude>
</EX_GeographicBoundingBox>
<BoundingBox CRS="EPSG:4326" minx="47.11" miny="43.43" maxx="49.92" maxy="44.06"/>
Возможно это границы растра на карте, но не понятно как заставить OpenLayers не запрашивать "лишние" ( "пусты" ) тайлы...