Skip to content

Instantly share code, notes, and snippets.

@ktk

ktk/map.js Secret

Created February 26, 2021 03:49
Show Gist options
  • Save ktk/1289a05f06a321fdd7619b0a678b43af to your computer and use it in GitHub Desktop.
Save ktk/1289a05f06a321fdd7619b0a678b43af to your computer and use it in GitHub Desktop.
/* global jsonld */
'use strict'
var iframeTemplate = '<iframe src="https://map.geo.admin.ch/embed.html?${mapId}" style="width:100%; height: 300px; border: 0;"></iframe>'
var geoJsonLinkTemplate = '<a class="pull-right" href="${geoJsonUrl}" target="_blank">Download as GeoJSON</a>'
function addMapIFrame (subject) {
var html = ''
if ('http://schema.org/hasMap' in subject) {
var mapUrl = subject['http://schema.org/hasMap'][0]['@id']
var embeddedUrl = mapUrl.split('?').pop()
html += iframeTemplate.replace('${mapId}', embeddedUrl)
}
if ('http://schema.org/sameAs' in subject) {
html += geoJsonLinkTemplate.replace('${geoJsonUrl}', subject['http://schema.org/sameAs'][0]['@id'])
}
var element = document.getElementById('map')
element.innerHTML = html
}
function embeddedJsonLd () {
var element = document.getElementById('data')
if (!element) {
return Promise.reject()
}
var json = JSON.parse(element.innerHTML)
return jsonld.promises.flatten(json, {}).then(function (flat) {
return jsonld.promises.expand(flat)
})
}
embeddedJsonLd().then(function (graph) {
var subjectUrl = document.createElement('a')
var windowUrl = document.createElement('a')
windowUrl.href = window.location.href
var subject = graph.filter(function (subject) {
subjectUrl.href = subject['@id']
return subjectUrl.pathname === windowUrl.pathname
}).shift()
if (subject) {
addMapIFrame(subject)
}
}).catch(function (err) {
console.error(err)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment