javascript - 为 Openseadragon 添加注解

标签 javascript php jquery openseadragon

var viewer = OpenSeadragon({
    id: "openseadragon1",
    prefixUrl: "images/openseadragon/",
    showNavigator:  true,
    navigatorPosition:   "BOTTOM_RIGHT",
    tileSources: '/fcgi-bin/iipsrv.fcgi?Deepzoom=<?=$plink?>.jp2.dzi',
    crossOriginPolicy: 'Anonymous',
    zoomInButton:   "zoom-in",
    zoomOutButton:  "zoom-out",
    homeButton:     "home",
    fullPageButton: "full-page"
});

anno.makeAnnotatable(viewer);

$.ajax({
    url: "handlers/H_AnnotationHandler.php",
    data: "case_id=<?=$case_id?>&plink=<?=$plink?>&mode=get",
    type: "post",
    dataType: "json",
    success: function(response) {
        if (!response.error) {
            for (var i=0; i<response.annots.length; i++) {
                console.log(response.annots[i].comment);
                anno.addAnnotation({
                    text: response.annots[i].comment,
                    shapes: [{
                        type: 'rect',
                        geometry: {
                            x: response.annots[i].rect_x,
                            y: response.annots[i].rect_y,
                            width: response.annots[i].rect_w,
                            height: response.annots[i].rect_h
                        }
                    }]
                });
            }
        } else {
            console.log(response.error);
        }
    }
});

我可以实时添加注释:http://annotorious.github.io/demos/openseadragon-preview.html

用户添加注释后,我存储在我的数据库中。当用户刷新页面时,我使用 ajax 调用 (H_AnnotationHandler.php) 从数据库加载保存的数据。返回数据是真的,但是我无法使用anno.addAnnotation在jpeg2000图像上绘制注释,我该如何绘制它?

引用:添加注释API .

最佳答案

您在 anno.addAnnotation 方法中缺少 src 属性,问题是我真的不知道那里应该有什么值,文档中没有关于那,我在互联网上唯一能找到的就是这个插件:

https://github.com/dgutman/OpenSeadragon-Plugins/tree/master/annotationState_Code

你可以试试看。

编辑

我实际上设法在演示页面上以编程方式附加事件,那里的 open sea dragon 模块注册为 dzi://openseadragon/something,知道这一点你可以调用函数

anno.addAnnotation({
    src : 'dzi://openseadragon/something',
    text : 'My annotation',
    shapes : [{
        type : 'rect',
        geometry : { x : 0.8, y: 0.8, width : 0.2, height: 0.2 }
    }]
});

来自控制台(或在 ajax-success 循环中的代码中),它将被添加到图像中。然而,命名方法很漂亮......好吧,我在源代码中找到了这个:

annotorious.mediatypes.openseadragon.OpenSeadragonModule.prototype.getItemURL = function(item) {
  // TODO implement something decent!
  return 'dzi://openseadragon/something';
}

所以请放心,这在未来可能会改变。

关于javascript - 为 Openseadragon 添加注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34808659/

相关文章:

javascript - 如何在 Phaser 3 中 Sprite 的移动停止时停止动画

php - .ajax, .text 输入显示函数

php - Laravel 4 - 使用多个复选框重新填充表单以进行编辑

javascript - 如何设置动画让元素绕着圆圈移动?

javascript - 数组中的上一个/下一个项目

javascript - 以百分比宽度居中 div,但以最大宽度居中

javascript - `ondragstart` 可变CSS样式

javascript - Chartjs 多个条形图对应一个标签

javascript - AngularJS - 绑定(bind)元素以模糊未触发

php - html表格转sql表格