javascript - 无法使用 jquery clone 克隆 map 的图像图 block

标签 javascript jquery css

在 Open Street map 和 paperfold CSS animation 上工作.

我在里面放了一张 map

<section class="comment" style="height:250px;">
     <p> <div id="demoMap" style="height:250px;"></div></p>
</section>

但是它不能显示完整的 map 。我不知道确切原因,但我猜是在 js 库中无法克隆 map 的瓦片。

createFold: function(j, topHeight, bottomHeight) {
    var offsetTop = -j * topHeight;
    var offsetBottom = -this.height + j * topHeight + this.foldHeight;
    
    return $('<div>') 
        .addClass('fold')
        .append(
            $('<div>')
                .addClass('top')
                .css('height', topHeight)
                .append(
                    $('<div>')
                        .addClass('inner')
                        .css('top', offsetTop)
                        .append(this.content.clone())
                )
                .add($('<div>')
                .addClass('bottom')
                .css('height', bottomHeight)
                .append(
                    $('<div>')
                        .addClass('inner')
                        .css('bottom', offsetBottom)
                        .append(this.content.clone())
                )
            )
        );
    },

那么是否有一种方法可以克隆 map 的瓦片,或者我做错了。如果是这样,我怎么能做到这一点...

最佳答案

只要您可以访问 tile 元素,您就可以克隆它们,但是(假设界面现在相同)它们似乎是绝对放置的 img OpenStreetMap 中的标签 - div s 已折叠,因此您需要克隆 img元素本身(并使用它,以不同的定位,假设它适用于库),或创建一个 div , 从图像中提取 url 并将其用作背景 div .由于瓷砖按逻辑编号,如果您知道您想要的区域,您可以跳过这一步,也许是这样的:

var startX = 7,
    endX = 8,
    startY = 3,
    endY = 10,
    scale = 5,
    $parent = $('<div class="map"></div>');

for (var y = startY; y <= endY; y++) {
    var $row = $('<div class="tile-row"></div>');
    for (var x = startX; x <= endX; x++) {
        $row.append(
            $('<img />')
            .attr('src', 'http://path.to.images/'+scale+'/'+x+'/'+y'.png');
        );
        // or:
        // $('<div></div>')
        // .css('background-image', 'http://path.to.images/'+scale+'/'+x+'/'+y'.png');

    };
    $parent.append($fold);
};

OpenStreetMap 本身的原生格式可能不适用于这个特定的库(尤其是其绝对定位的图像),因此我认为您需要使用更多 position: static 来模仿其布局结构,避免绝对位置并将其拆分为可以折叠的包含行。

关于javascript - 无法使用 jquery clone 克隆 map 的图像图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248826/

相关文章:

javascript - 如何防止 switch e.which 内的默认情况

构建 dojo 时出现 css 语法错误

css - 创建具有特定结构的列表项

javascript - 如何在列数未知的 Bootstrap 上制作行?

javascript - 使用 JS 和 JQuery 播放和停止声音

javascript - 正则表达式 - 检查字符串是否包含部分 URL 并转换为链接

javascript - 使按钮在按下 Enter 时单击

javascript - HTML/CSS/JS/jQuery : Color "table"/"grid"

javascript - 如何使用覆盖有效地突出显示鼠标光标下的元素?

javascript - 如何复制这种效果? CSS3