Skip to content

Locate Multiple Canvases on a Web Map

Cookbook URLs
Recipe: https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/
JSON-LD: https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases/manifest.json

Method 1 - Without Helpers

from iiif_prezi3 import Manifest, NavPlace, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases"

manifest = Manifest(
    id=f"{base_url}/manifest.json",
    label="Laocöon, geolocated sculpture and painting.",
    **{"@context": [
        "http://iiif.io/api/extension/navplace/context.json",
        "http://iiif.io/api/presentation/3/context.json",
    ]},
)

canvas1 = manifest.make_canvas_from_iiif(
    url="https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon",
    id=f"{base_url}/canvas/1",
    label="Front of Bronze",
    anno_id=f"{base_url}/anno/1",
    anno_page_id=f"{base_url}/anno-page/1",
    navPlace=NavPlace(
        id=f"{base_url}/feature-collection/1",
        features=[{
            "id": f"{base_url}/feature/1",
            "type": "Feature",
            "properties": {
                "label": {
                    "en": ["Current Location of the Laocoön Bronze"],
                    "it": ["Ubicazione attuale del Bronzo Laocoonte e i suoi figli"],
                }
            },
            "geometry": {
                "type": "Point",
                "coordinates": [-118.4745559, 34.0776376],
            },
        }],
    ),
)

canvas2 = manifest.make_canvas_from_iiif(
    url="https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1",
    id=f"{base_url}/canvas/2",
    label="Painting",
    anno_id=f"{base_url}/anno/2",
    anno_page_id=f"{base_url}/anno-page/2",
    navPlace=NavPlace(
        id=f"{base_url}/feature-collection/2",
        features=[{
            "id": f"{base_url}/feature/2",
            "type": "Feature",
            "properties": {
                "label": {
                    "en": ["Current Location of Painting"],
                }
            },
            "geometry": {
                "type": "Point",
                "coordinates": [-77.0199025, 38.8920717],
            },
        }],
    ),
)

print(manifest.json(indent=2))

Method 2 - With Helpers

from iiif_prezi3 import Manifest, config

config.configs['helpers.auto_fields.AutoLang'].auto_lang = "en"
base_url = "https://iiif.io/api/cookbook/recipe/0240-navPlace-on-canvases"

manifest = Manifest(
    id=f"{base_url}/manifest.json",
    label="Laocöon, geolocated sculpture and painting.",
)
manifest.add_context("http://iiif.io/api/extension/navplace/context.json")

canvas1 = manifest.make_canvas_from_iiif(
    url="https://iiif.io/api/image/3.0/example/reference/28473c77da3deebe4375c3a50572d9d3-laocoon",
    id=f"{base_url}/canvas/1",
    label="Front of Bronze",
    anno_id=f"{base_url}/anno/1",
    anno_page_id=f"{base_url}/anno-page/1",
)
canvas1.add_navplace_feature(
    id=f"{base_url}/feature/1",
    label={
        "en": ["Current Location of the Laocoön Bronze"],
        "it": ["Ubicazione attuale del Bronzo Laocoonte e i suoi figli"],
    },
    geometry={
        "type": "Point",
        "coordinates": [-118.4745559, 34.0776376],
    },
    feature_collection_id=f"{base_url}/feature-collection/1",
)

canvas2 = manifest.make_canvas_from_iiif(
    url="https://iiif.io/api/image/3.0/example/reference/58763298b61c2a99f78ff94d8364c639-laocoon_1946_18_1",
    id=f"{base_url}/canvas/2",
    label="Painting",
    anno_id=f"{base_url}/anno/2",
    anno_page_id=f"{base_url}/anno-page/2",
)
canvas2.add_navplace_feature(
    id=f"{base_url}/feature/2",
    label={
        "en": ["Current Location of Painting"],
    },
    geometry={
        "type": "Point",
        "coordinates": [-77.0199025, 38.8920717],
    },
    feature_collection_id=f"{base_url}/feature-collection/2",
)

print(manifest.json(indent=2))