javascript - 无法在 Seadragon 中创建多个叠加层

标签 javascript jquery deepzoom seadragon

我正在尝试将叠加层添加到我正在制作的海龙 map 中,但由于某种原因,我无法想象我们的海龙会忽略除第一个叠加层之外的所有叠加层。非常感谢任何对此的帮助。

var viewer = null;

function init() {
    Seadragon.Config.autoHideControls = false;

    viewer = new Seadragon.Viewer("container");

    viewer.addEventListener("open", addOverlays);

    viewer.addControl(makeControl(), Seadragon.ControlAnchor.TOP_RIGHT);

    $(viewer.getNavControl()).parent().parent().css({ 'top': 10, 'right': 10 });
    viewer.openDzi("_assets/Mapdata/dzc_output.xml");

}

function makeControl() {
    var control = document.createElement("a");
    var controlText = document.createTextNode("");

    control.href = "#"; // so browser shows it as link
    control.className = "control";
    control.appendChild(controlText);

    Seadragon.Utils.addEvent(control, "click",
                    onControlClick);

    return control;
}

function onControlClick(event) {
    Seadragon.Utils.cancelEvent(event); // don't process link

    if (!viewer.isOpen()) {
        return;
    }

    // These are the coordinates of europe on this map
    var x = 0.5398693914203284;
    var y = 0.21155952391206562;
    var z = 5;

    viewer.viewport.panTo(new Seadragon.Point(x, y));
    viewer.viewport.zoomTo(z);
    viewer.viewport.ensureVisible();
}

function addOverlays(viewer) {
    drawer = viewer.drawer;
    var img = document.createElement("img");
    img.src = "_assets/Images/pushpin.png";

    $(img).addClass('pushPin');

    var overlays = [
        { elmt: img, point: new Seadragon.Point(0.51, 0.22) },
        { elmt: img, point: new Seadragon.Point(0.20, 0.13) }
    ];

    for (var i = 0; i < overlays.length; i++) {
        drawer.addOverlay(overlays[i].elmt, overlays[i].point);
    }


}

Seadragon.Utils.addEvent(window, "load", init);

最佳答案

我应该创建一个返回 img 的函数并在对象数组内调用它

function newpushPin() {
    var img = document.createElement("img");
    img.src = "_assets/Images/pushpin.png";
    return img
}

var overlays = [
    { elmt: newpushPin(), point: new Seadragon.Point(0.51, 0.22) },
    { elmt: newpushPin(), point: new Seadragon.Point(0.53, 0.22) },
    { elmt: newpushPin(), point: new Seadragon.Point(0.53, 0.23) },
    { elmt: newpushPin(), point: new Seadragon.Point(0.50, 0.20) }
];

关于javascript - 无法在 Seadragon 中创建多个叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2951427/

相关文章:

javascript - ngSwitchCase 没有提供者

Javascript - 使用文本输入框过滤数据

c# - Silverlight Deepzoom API 输出与 Deepzoom Composer 输出

Silverlight MultiScaleImage 不会填充可用空间

javascript - 使用 Jquery 更改内容后 CSS 动画再次运行

javascript - 对象字面量/初始化程序中的自引用

javascript - CORS 策略 : No 'Access-Control-Allow-Origin' 已阻止从源 *** 访问 ***

javascript - 如何使用 Bootstrap 在悬停时显示 Action 列表?

javascript - 如何通过 FileReader 检查上传图片的类型?

image - 网络浏览器中的非常大的图像