Openlayers: слои не наложены должным образом

Я пытаюсь сделать карту, используя слой TMS и слой Boxes.

Мой пример

Моя карта построена так:

`var get_my_url = function (bounds) {
    var res = this.map.getResolution();
    var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
    var zoom = this.map.getZoom();

    var path = '433-' + zoom + "-" + x + "-" + y + "." + this.type; 
    var url = this.url;
    if (url instanceof Array) {
        url = this.selectUrl(path, url);
    }
    return url + path;
}

var maxSize = 3872;
var mapHeight = 2592;
var tileSize = 256;

var options = {
    maxExtent: new OpenLayers.Bounds(0,0,maxSize,maxSize),
    maxResolution: maxSize / tileSize,
    numZoomLevels: 5
};

var map = new OpenLayers.Map(
    'map',
    options
);`

Мой слой TMS построен так:

`var layer = new OpenLayers.Layer.TMS(
    'Aerial',
    '<?php print site_url(); ?>/wp-content/uploads/map-tiles/',
    {
        type: 'png',
        getURL: get_my_url,
        layername: "basic",
        isBaseLayer: true
    }
);`

И наконец, мой слой Boxes построен так:

`var bounds = new OpenLayers.Bounds(<?php print $box_x ?>, <?php print $box_y ?>, <?php print $box_x + $box_w ?>, <?php print $box_y + $box_h ?>);
box = new OpenLayers.Marker.Box(bounds);
box.events.register("click", box, function (e) {
    this.setBorder("yellow");
});

var boxes  = new OpenLayers.Layer.Boxes( 
    'Boxes',
    {
        layername: "juzbox",
        isBaseLayer: false
    }
);
boxes.addMarker(box);`

Теперь я просто добавляю слои на свою карту и устанавливаю центр на карте следующим образом:

`map.addLayers([layer, boxes]);

var lonlat = new OpenLayers.LonLat(maxSize/2, maxSize-(mapHeight/2));
lonlat.transform(map.displayProjection, map.baseLayer.projection);
map.setCenter(lonlat, 2);`

Моя проблема в том, что мои слои не наложены друг на друга, а второй находится под первым...

Нужна помощь!!

1 ответ

Вот это да!! Полтора дня, чтобы решить это... Я думаю, что иногда я просто тупой...:)

Примечание для дальнейшего: 0,0 - левый нижний угол карты, а не верхний левый!!!

Так что проблема была только в слое границ бокса.

var bounds = new OpenLayers.Bounds(<?php print $box_x ?>, maxSize - <?php print $box_y + $box_h ?>, <?php print $box_x + $box_w ?>, maxSize - <?php print $box_y ?>);

И это работает... посмотрите на пример

Другие вопросы по тегам