remove unused copy of CaveView in troggle and updated cave.html
template for caveview2
@ -1,164 +0,0 @@
|
|||||||
From: <Saved by Blink>
|
|
||||||
Snapshot-Content-Location: https://aardgoose.github.io/CaveView.js/installation.html
|
|
||||||
Subject: CaveView installation
|
|
||||||
Date: Sun, 24 Oct 2021 15:46:19 -0000
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: multipart/related;
|
|
||||||
type="text/html";
|
|
||||||
boundary="----MultipartBoundary--eCFBXfFmJiPIUIDdJDuaiHRJfZ59xqA99QxmIcmsBZ----"
|
|
||||||
|
|
||||||
|
|
||||||
------MultipartBoundary--eCFBXfFmJiPIUIDdJDuaiHRJfZ59xqA99QxmIcmsBZ----
|
|
||||||
Content-Type: text/html
|
|
||||||
Content-ID: <frame-F25506009C17180F1D15EDA63865EFC8@mhtml.blink>
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
Content-Location: https://aardgoose.github.io/CaveView.js/installation.html
|
|
||||||
|
|
||||||
<!DOCTYPE html><html xmlns=3D"http://www.w3.org/1999/xhtml" xml:lang=3D"en-=
|
|
||||||
gb" lang=3D"en-gb" dir=3D"ltr"><head><meta http-equiv=3D"Content-Type" cont=
|
|
||||||
ent=3D"text/html; charset=3DUTF-8">
|
|
||||||
<title>CaveView installation</title>
|
|
||||||
=09
|
|
||||||
<link type=3D"text/css" href=3D"https://aardgoose.github.io/CaveView.js/do=
|
|
||||||
c.css" rel=3D"stylesheet">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Cave View - installation instructions - V2 API</h1>
|
|
||||||
<h2>Install CaveView files</h2>
|
|
||||||
<p>A zip archive containing the required files for the latest release are =
|
|
||||||
<a href=3D"https://github.com/aardgoose/CaveView.js/releases">here</a>.</p>
|
|
||||||
<p>There is no need to build the JavaScript application from source files =
|
|
||||||
unless you would like to modify the application.</p>
|
|
||||||
<p>Unzip the archive in a convenient location on your web server </p>
|
|
||||||
<h2>Using in a web page</h2>
|
|
||||||
|
|
||||||
<p>CaveView requires two files to be included in the page. Replace the plac=
|
|
||||||
eholder %path% with the path to the unzipped files on the server in the fol=
|
|
||||||
lowing examples.</p><p>
|
|
||||||
|
|
||||||
</p><h3>caveview.css</h3>
|
|
||||||
<p>The side panel interface and on screen indicators are styled with cavevi=
|
|
||||||
ew.css. Include this in the <strong>head</strong> section of the page.</p>
|
|
||||||
|
|
||||||
<pre> <link type=3D"text/css" href=3D"%path%/CaveView/css/caveview.css" =
|
|
||||||
rel=3D"stylesheet" /></pre>
|
|
||||||
|
|
||||||
<h3>CaveView.js</h3>
|
|
||||||
|
|
||||||
<p>The CaveView application is provided in one javascript file. Include thi=
|
|
||||||
s in the <strong>body</strong> section of the page. <strong>NOTE: The filen=
|
|
||||||
ame has changed for the V2 API.</strong></p>
|
|
||||||
|
|
||||||
<pre> <script type=3D"text/javascript" src=3D"%path%/CaveView/js/CaveVie=
|
|
||||||
w2.js" ></script></pre>
|
|
||||||
|
|
||||||
<h3>Add a container element</h3>
|
|
||||||
|
|
||||||
<p>Add an empty block element to the page, with a suitable <strong>id</stro=
|
|
||||||
ng> attribute. This contains the application, and be sized as required. For=
|
|
||||||
example a <strong>div</strong> element:</p>
|
|
||||||
|
|
||||||
<pre><div id=3D'% element-id %' ></div></pre>
|
|
||||||
|
|
||||||
<h3>Create a script to run the application</h3>
|
|
||||||
|
|
||||||
<p>The application can be loaded using javascript, typically using an load =
|
|
||||||
event handler. Replace the placeholder %...% elements with values appropria=
|
|
||||||
te for your site.</p>
|
|
||||||
<pre><script type=3D"text/javascript" >
|
|
||||||
|
|
||||||
function onLoad () {
|
|
||||||
|
|
||||||
// display the user interface - and a blank canvas
|
|
||||||
|
|
||||||
// the configuration object specifies the location of CaveView, surveys a=
|
|
||||||
nd terrain files
|
|
||||||
|
|
||||||
var viewer =3D new CV2.CaveViewer( '% element-id %', {
|
|
||||||
home: '% location of the unzipped CaveView directory on the survey %',
|
|
||||||
surveyDirectory: '% location of the survey files on the server %',
|
|
||||||
terrainDirectory: '% location of the terrain files on the server %'
|
|
||||||
} );
|
|
||||||
|
|
||||||
// if using the full user interface (UI)
|
|
||||||
|
|
||||||
var ui =3D new CV2.CaveViewUI( viewer );
|
|
||||||
|
|
||||||
// load a single survey to display
|
|
||||||
|
|
||||||
ui.loadCave( '% survey filename %' );
|
|
||||||
|
|
||||||
// or without the user interface
|
|
||||||
|
|
||||||
viewer.loadCave( '% survey filename %' );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>alternatively provide a list of surveys to display, by replacing the loa=
|
|
||||||
dCave() function call with loadCaveList() :</p>
|
|
||||||
|
|
||||||
<pre> ui.loadCaveList( [ '% survey filename 1 %', '% survey filename 2 %', =
|
|
||||||
'% survey filename 3 %' ] );
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>This can be automatically executed on page load by including a page load=
|
|
||||||
handler in the page <strong>body</strong> tag:</p>
|
|
||||||
<pre><body onload=3D"onload();" ></pre>
|
|
||||||
|
|
||||||
<p>CaveView should now display when the page is viewed.</p>
|
|
||||||
<p>The example files included demonstrate using multiple viewers on a page,
|
|
||||||
changing the default view settings and altering the appearance of the viewe=
|
|
||||||
r.</p>
|
|
||||||
|
|
||||||
<h3>Removal</h3>
|
|
||||||
|
|
||||||
<p>To remove the viewer from a page and reclaim memory used promptly:</p>
|
|
||||||
<pre> ui.dispose();
|
|
||||||
ui =3D null;
|
|
||||||
viewer =3D null;
|
|
||||||
</pre>
|
|
||||||
<p>Or if not using the UI, just the viewer:</p>
|
|
||||||
<pre> viewer.dispose();
|
|
||||||
viewer =3D null;
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
|
|
||||||
</body></html>
|
|
||||||
------MultipartBoundary--eCFBXfFmJiPIUIDdJDuaiHRJfZ59xqA99QxmIcmsBZ----
|
|
||||||
Content-Type: text/css
|
|
||||||
Content-Transfer-Encoding: quoted-printable
|
|
||||||
Content-Location: https://aardgoose.github.io/CaveView.js/doc.css
|
|
||||||
|
|
||||||
@charset "utf-8";
|
|
||||||
|
|
||||||
h1, h2 { margin: 0px 16px 1em; }
|
|
||||||
|
|
||||||
h3, h4, h5, p, pre, dl { margin-left: 32px; margin-right: 32px; }
|
|
||||||
|
|
||||||
h2 { border-bottom: 2px solid gray; }
|
|
||||||
|
|
||||||
h3 { color: navy; }
|
|
||||||
|
|
||||||
h4 { margin-top: 2em; background-color: rgb(238, 238, 238); padding: 3px 2p=
|
|
||||||
x 1px; }
|
|
||||||
|
|
||||||
* { font-family: sans-serif; }
|
|
||||||
|
|
||||||
pre { font-family: monospace; font-weight: bold; background-color: rgb(238,=
|
|
||||||
238, 238); padding: 8px; }
|
|
||||||
|
|
||||||
dd > span { display: inline-block; padding: 0px 2px; margin-right: 5px; bac=
|
|
||||||
kground: rgb(238, 238, 238); }
|
|
||||||
|
|
||||||
dd > span::before { content: "["; }
|
|
||||||
|
|
||||||
dd > span::after { content: "]"; }
|
|
||||||
|
|
||||||
dt { margin-bottom: 0.5em; font-weight: bold; color: rgb(102, 102, 102); pa=
|
|
||||||
dding-left: 16px; }
|
|
||||||
|
|
||||||
dd { margin-bottom: 1em; }
|
|
||||||
------MultipartBoundary--eCFBXfFmJiPIUIDdJDuaiHRJfZ59xqA99QxmIcmsBZ------
|
|
@ -1,403 +0,0 @@
|
|||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
font-family: 'Source Sans Pro Regular','Helvetica Neue',Helvetica,Arial,sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.cv-panel {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 100;
|
|
||||||
background-color: rgba(50,50,50,0.5);
|
|
||||||
color: yellowgreen;
|
|
||||||
border: 1px solid black;
|
|
||||||
border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.cv-compass, div.cv-ahi {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 95px;
|
|
||||||
right: 5px;
|
|
||||||
margin: 0;
|
|
||||||
padding-top: 2px;
|
|
||||||
/* border: 1px solid white; */
|
|
||||||
text-align: center;
|
|
||||||
width: 78px;
|
|
||||||
height: 19px;
|
|
||||||
z-index: 50;
|
|
||||||
background-color: rgba(50,50,50,0.5);
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.cv-ahi {
|
|
||||||
right: 95px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.scale-legend {
|
|
||||||
position: absolute;
|
|
||||||
color: white;
|
|
||||||
background-color: black;
|
|
||||||
bottom: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.linear-scale {
|
|
||||||
position: absolute;
|
|
||||||
color: white;
|
|
||||||
background-color: black;
|
|
||||||
right: 30px;
|
|
||||||
width: 40px;
|
|
||||||
padding: 2px 0;
|
|
||||||
text-align: right;
|
|
||||||
border: 1px solid black;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.linear-scale-caption {
|
|
||||||
position: absolute;
|
|
||||||
color: white;
|
|
||||||
background-color: black;
|
|
||||||
right: 5px;
|
|
||||||
width: 65px;
|
|
||||||
padding: 2px 0 5px 0;
|
|
||||||
text-align: left;
|
|
||||||
border: 1px solid black;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#min-div {
|
|
||||||
border-bottom: 1px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#max-div {
|
|
||||||
border-top: 1px solid white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#angle-legend {
|
|
||||||
position: absolute;
|
|
||||||
width: 80px;
|
|
||||||
right: 5px;
|
|
||||||
bottom: 180px;
|
|
||||||
color: white;
|
|
||||||
background-color: black;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scene {
|
|
||||||
width: 100%;
|
|
||||||
height: 700px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#progress-bar {
|
|
||||||
position: absolute;
|
|
||||||
top: 55%;
|
|
||||||
height: 20px;
|
|
||||||
border: 1px solid white;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
#status-text {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
height: 20px;
|
|
||||||
padding-left: 4px;
|
|
||||||
background-color: black;
|
|
||||||
color: white;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page ul {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 8px 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 200px;
|
|
||||||
height: 100%;
|
|
||||||
cursor: default;
|
|
||||||
font-size: 12px;
|
|
||||||
overflow-y: auto;
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page li {
|
|
||||||
position: relative;
|
|
||||||
margin-left: 16px;
|
|
||||||
border-bottom: 1px solid #444444;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page li.selected {
|
|
||||||
color: #1ab4e5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page li:hover {
|
|
||||||
color: yellow;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div#ui-path {
|
|
||||||
font-size: 12px;
|
|
||||||
border-top: 1px solid grey;
|
|
||||||
border-bottom: 1px solid grey;
|
|
||||||
margin-top: 8px;
|
|
||||||
padding: 2px 0 2px 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div#ui-path span {
|
|
||||||
color: #1ab4e5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div.slide {
|
|
||||||
position: absolute;
|
|
||||||
top: 64px;
|
|
||||||
left: 0px;
|
|
||||||
height: auto;
|
|
||||||
margin-top:0;
|
|
||||||
bottom: 44px;
|
|
||||||
background-color: #222222;
|
|
||||||
transition: transform 0.25s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.slide-out {
|
|
||||||
border-right: 1px grey solid;
|
|
||||||
transform: translateX(-100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div.descend-tree {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
right: 0px;
|
|
||||||
margin: 0;
|
|
||||||
color: #1ab4e5;
|
|
||||||
z-index: 110;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
left: 0px;
|
|
||||||
width: 240px;
|
|
||||||
height: 100%;
|
|
||||||
background-color: transparent;
|
|
||||||
transform: translateX(-200px);
|
|
||||||
transition: transform 0.25s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame.onscreen {
|
|
||||||
transform: none;
|
|
||||||
transition: transform 0.25s ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame a.download {
|
|
||||||
border: 1px solid green;
|
|
||||||
display: block;
|
|
||||||
width: 180px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-top: 6px;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
margin-left: 8px;
|
|
||||||
border: none;
|
|
||||||
border-bottom: 4px solid #1ab4e5;
|
|
||||||
color: #dddddd;
|
|
||||||
background-color: black;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
box-shadow: 1px 1px 8px 0px #888888;
|
|
||||||
outline: none;
|
|
||||||
text-decoration: none;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame a.download:hover {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame a.download:active {
|
|
||||||
color: #dddddd;
|
|
||||||
border-bottom: 4px solid #0c536a;
|
|
||||||
box-shadow: none;
|
|
||||||
box-shadow: inset 1px 1px 8px 0px #888888;
|
|
||||||
}
|
|
||||||
#frame .tab {
|
|
||||||
position: absolute;
|
|
||||||
right: 0px;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #444444;
|
|
||||||
border-left: 1px solid black;
|
|
||||||
background-position: center;
|
|
||||||
border-top: 1px solid black;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame #close {
|
|
||||||
position: absolute;
|
|
||||||
right: 40px;
|
|
||||||
bottom: 0px;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
z-index: 150;
|
|
||||||
background-image: url(../images/ic_remove.png);
|
|
||||||
background-position: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_settings {
|
|
||||||
background-image: url(../images/ic_settings.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_terrain {
|
|
||||||
background-image: url(../images/ic_terrain.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_explore {
|
|
||||||
background-image: url(../images/ic_explore.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_info {
|
|
||||||
background-image: url(../images/ic_info.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_route {
|
|
||||||
background-image: url(../images/ic_route.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#icon_help {
|
|
||||||
background-image: url(../images/ic_help.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.toptab {
|
|
||||||
background-color: #222222;
|
|
||||||
border-left: none;
|
|
||||||
border-right: 1px solid grey;
|
|
||||||
border-top: 1px solid grey;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page {
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
bottom: 40px;
|
|
||||||
left: 0px;
|
|
||||||
width: 200px;
|
|
||||||
height: 100%;
|
|
||||||
color: white;
|
|
||||||
background-color: #222222;
|
|
||||||
padding: 0 4px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
cursor: default;
|
|
||||||
padding-bottom: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div.header {
|
|
||||||
margin: 16px 0px 8px 0px;
|
|
||||||
font-weight: bold;
|
|
||||||
height: 16px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding-left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page div.control {
|
|
||||||
margin: 2px 0 2px 0;
|
|
||||||
padding-top: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page label {
|
|
||||||
display: block;
|
|
||||||
border-top: 1px solid grey;
|
|
||||||
padding: 2px 0 2px 8px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page select {
|
|
||||||
display: block;
|
|
||||||
width: 180px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding-top: 2px;
|
|
||||||
margin: 2px 0 4px 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page select:empty {
|
|
||||||
background-color: #888888;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page button {
|
|
||||||
display: block;
|
|
||||||
width: 180px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-top: 4px;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
margin-left: 8px;
|
|
||||||
border: none;
|
|
||||||
border-bottom: 4px solid #1ab4e5;
|
|
||||||
color: #dddddd;
|
|
||||||
background-color: black;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
box-shadow: 1px 1px 8px 0px #888888;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page button:hover {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page button:active {
|
|
||||||
color: #dddddd;
|
|
||||||
border-bottom: 4px solid #0c536a;
|
|
||||||
box-shadow: none;
|
|
||||||
box-shadow: inset 1px 1px 8px 0px #888888;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page input[type="text"] {
|
|
||||||
display: block;
|
|
||||||
width: 180px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-top: 2px;
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page input[type="checkbox"] {
|
|
||||||
position: absolute;
|
|
||||||
right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame div.page input[type="range"] {
|
|
||||||
display: block;
|
|
||||||
width: 180px;
|
|
||||||
margin-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame dt, #frame dd {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame dt {
|
|
||||||
clear: both;
|
|
||||||
float: left;
|
|
||||||
padding-left: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame dd {
|
|
||||||
margin-left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#frame p {
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.station-info {
|
|
||||||
position: absolute;
|
|
||||||
border: 1px solid white;
|
|
||||||
background-color: #222222;
|
|
||||||
color: white;
|
|
||||||
padding: 4px;
|
|
||||||
z-index: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.overlay-branding {
|
|
||||||
color: white;
|
|
||||||
margin: 4px;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 471 B |
Before Width: | Height: | Size: 476 B |
Before Width: | Height: | Size: 340 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 325 B |
Before Width: | Height: | Size: 317 B |
Before Width: | Height: | Size: 460 B |
Before Width: | Height: | Size: 231 B |
1
media/jslib/CaveView/js/CaveView-min.js
vendored
@ -1,35 +0,0 @@
|
|||||||
|
|
||||||
function BGSTileURL ( x, y, z ) {
|
|
||||||
|
|
||||||
var earthRadius = 6378137; // in meters
|
|
||||||
|
|
||||||
var tileCount = Math.pow( 2, z );
|
|
||||||
var tileSize = earthRadius * 2 * Math.PI / tileCount;
|
|
||||||
|
|
||||||
var x1, x2, y1, y2;
|
|
||||||
|
|
||||||
x = x - tileCount / 2;
|
|
||||||
y = tileCount / 2 - y;
|
|
||||||
|
|
||||||
x1 = x * tileSize;
|
|
||||||
y1 = y * tileSize;
|
|
||||||
|
|
||||||
x2 = x1 + tileSize;
|
|
||||||
y2 = y1 + tileSize;
|
|
||||||
|
|
||||||
|
|
||||||
var url = 'https://map.bgs.ac.uk/arcgis/services/BGS_Detailed_Geology/MapServer/WMSServer?REQUEST=GetMap&VERSION=1.3.0&LAYERS=BGS.50k.Bedrock&STYLES=default&FORMAT=image/png&CRS=EPSG:3857&WIDTH=450&HEIGHT=450';
|
|
||||||
var bbox = '&BBOX=' + x1 + ',' + y1 + ',' + x2 + ',' + y2;
|
|
||||||
|
|
||||||
console.log( 'BGS: ', bbox );
|
|
||||||
|
|
||||||
// var img = document.createElement( 'img' );
|
|
||||||
|
|
||||||
// img.src = url + bbox;
|
|
||||||
// img.crossOrigin = '';
|
|
||||||
|
|
||||||
// document.body.appendChild( img );
|
|
||||||
|
|
||||||
return url + bbox;
|
|
||||||
|
|
||||||
}
|
|
@ -1,129 +0,0 @@
|
|||||||
|
|
||||||
/*
|
|
||||||
* BingProvider.js (c) Angus Sawyer, 2017.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
function BingProvider ( imagerySet ) {
|
|
||||||
|
|
||||||
this.urlTemplate = null;
|
|
||||||
this.subdomains = [];
|
|
||||||
this.subdomainIndex = 0;
|
|
||||||
this.subdomainCount = 0;
|
|
||||||
|
|
||||||
this.minZoom = null;
|
|
||||||
this.maxZoom = null;
|
|
||||||
|
|
||||||
var self = this;
|
|
||||||
|
|
||||||
var metadata;
|
|
||||||
|
|
||||||
var uriScheme = window.location.protocol.replace( ':' , '' );
|
|
||||||
|
|
||||||
var key = 'Ap8PRYAyAVcyoSPio8EaFtDEpYJVNwEA70GqYj31EXa6jkT_SduFHMKeHnvyS4D_';
|
|
||||||
var metaUrlTemplate = uriScheme + '://dev.virtualearth.net/REST/v1/Imagery/Metadata/{imagerySet}?include=imageryProviders&uriScheme={uriScheme}&key={key}';
|
|
||||||
|
|
||||||
var metaUrl = metaUrlTemplate.replace( '{key}', key ).replace( '{imagerySet}', imagerySet ).replace( '{uriScheme}', uriScheme );
|
|
||||||
|
|
||||||
var req = new XMLHttpRequest();
|
|
||||||
|
|
||||||
req.open( 'GET', metaUrl );
|
|
||||||
|
|
||||||
req.responseType = 'text';
|
|
||||||
|
|
||||||
req.addEventListener( 'load', _getTemplate );
|
|
||||||
|
|
||||||
req.send();
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
function _getTemplate () {
|
|
||||||
|
|
||||||
metadata = JSON.parse( req.response );
|
|
||||||
|
|
||||||
var rss = metadata.resourceSets;
|
|
||||||
|
|
||||||
for ( var i = 0; i < rss.length; i++ ) {
|
|
||||||
|
|
||||||
var rs = rss[ i ].resources;
|
|
||||||
|
|
||||||
for ( var j = 0; j < rs.length; j++ ) {
|
|
||||||
|
|
||||||
var r = rs[ j ];
|
|
||||||
|
|
||||||
self.subdomains = r.imageUrlSubdomains;
|
|
||||||
self.urlTemplate = r.imageUrl;
|
|
||||||
|
|
||||||
self.minZoom = r.zoomMin;
|
|
||||||
self.maxZoom = r.zoomMax;
|
|
||||||
|
|
||||||
self.subdomainCount = self.subdomains.length;
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BingProvider.quadkey = function ( x, y, z ) {
|
|
||||||
|
|
||||||
var quadKey = [];
|
|
||||||
|
|
||||||
for ( var i = z; i > 0; i-- ) {
|
|
||||||
|
|
||||||
var digit = '0';
|
|
||||||
var mask = 1 << ( i - 1 );
|
|
||||||
|
|
||||||
if ( ( x & mask ) != 0 ) {
|
|
||||||
|
|
||||||
digit++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( y & mask ) != 0 ) {
|
|
||||||
|
|
||||||
digit++;
|
|
||||||
digit++;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
quadKey.push( digit );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return quadKey.join( '' );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
BingProvider.prototype.getAttribution = function () {
|
|
||||||
|
|
||||||
var img = document.createElement( 'img' );
|
|
||||||
|
|
||||||
img.src = 'https://www.microsoft.com/maps/images/branding/bing_maps_logo_white_125px_27px.png';
|
|
||||||
img.classList.add( 'overlay-branding' );
|
|
||||||
|
|
||||||
return img;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
BingProvider.prototype.getUrl = function ( x, y, z ) {
|
|
||||||
|
|
||||||
var urlTemplate = this.urlTemplate;
|
|
||||||
|
|
||||||
if ( urlTemplate === null ) return null;
|
|
||||||
|
|
||||||
var qk = BingProvider.quadkey( x, y, z );
|
|
||||||
|
|
||||||
thissubdomainIndex = ++this.ubdomainIndex % this.subdomainCount;
|
|
||||||
|
|
||||||
var url = urlTemplate.replace( '{subdomain}', this.subdomains[ this.subdomainIndex ] ).replace( '{quadkey}', qk );
|
|
||||||
|
|
||||||
return url;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
|||||||
/**
|
|
||||||
* @author alteredq / http://alteredqualia.com/
|
|
||||||
* @author mr.doob / http://mrdoob.com/
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Detector = {
|
|
||||||
|
|
||||||
canvas: !! window.CanvasRenderingContext2D,
|
|
||||||
webgl: ( function () {
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
var canvas = document.createElement( 'canvas' ); return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
|
|
||||||
|
|
||||||
} catch ( e ) {
|
|
||||||
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} )(),
|
|
||||||
workers: !! window.Worker,
|
|
||||||
fileapi: window.File && window.FileReader && window.FileList && window.Blob,
|
|
||||||
|
|
||||||
getWebGLErrorMessage: function () {
|
|
||||||
|
|
||||||
var element = document.createElement( 'div' );
|
|
||||||
element.id = 'webgl-error-message';
|
|
||||||
element.style.fontFamily = 'monospace';
|
|
||||||
element.style.fontSize = '13px';
|
|
||||||
element.style.fontWeight = 'normal';
|
|
||||||
element.style.textAlign = 'center';
|
|
||||||
element.style.background = '#fff';
|
|
||||||
element.style.color = '#000';
|
|
||||||
element.style.padding = '1.5em';
|
|
||||||
element.style.width = '400px';
|
|
||||||
element.style.margin = '5em auto 0';
|
|
||||||
|
|
||||||
if ( ! this.webgl ) {
|
|
||||||
|
|
||||||
element.innerHTML = window.WebGLRenderingContext ? [
|
|
||||||
'Your graphics card does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">WebGL</a>.<br />',
|
|
||||||
'Find out how to get it <a href="http://get.webgl.org/" style="color:#000">here</a>.'
|
|
||||||
].join( '\n' ) : [
|
|
||||||
'Your browser does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">WebGL</a>.<br/>',
|
|
||||||
'Find out how to get it <a href="http://get.webgl.org/" style="color:#000">here</a>.'
|
|
||||||
].join( '\n' );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return element;
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
addGetWebGLMessage: function ( parameters ) {
|
|
||||||
|
|
||||||
var parent, id, element;
|
|
||||||
|
|
||||||
parameters = parameters || {};
|
|
||||||
|
|
||||||
parent = parameters.parent !== undefined ? parameters.parent : document.body;
|
|
||||||
id = parameters.id !== undefined ? parameters.id : 'oldie';
|
|
||||||
|
|
||||||
element = Detector.getWebGLErrorMessage();
|
|
||||||
element.id = id;
|
|
||||||
|
|
||||||
parent.appendChild( element );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// browserify support
|
|
||||||
if ( typeof module === 'object' ) {
|
|
||||||
|
|
||||||
module.exports = Detector;
|
|
||||||
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
function NLSProvider () {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
NLSProvider.prototype.minZoom = 12;
|
|
||||||
NLSProvider.prototype.maxZoom = 14;
|
|
||||||
|
|
||||||
NLSProvider.prototype.getUrl = function ( x, y, z ) {
|
|
||||||
|
|
||||||
return NLSTileUrlOS( x, y, z );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
NLSProvider.prototype.getAttribution = function () {
|
|
||||||
|
|
||||||
var a = document.createElement( 'a' );
|
|
||||||
|
|
||||||
a.href = 'http://maps.nls.uk';
|
|
||||||
a.textContent = 'map overlay by National Library of Scotland';
|
|
||||||
|
|
||||||
return a;
|
|
||||||
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
function OSMProvider () {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
OSMProvider.prototype.getUrl = function ( x, y, z ) {
|
|
||||||
|
|
||||||
return 'https://b.tile.openstreetmap.org/' + z + '/' + x + '/' + y + '.png';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
OSMProvider.prototype.getAttribution = function () {
|
|
||||||
|
|
||||||
var a = document.createElement( 'a' );
|
|
||||||
|
|
||||||
a.textContent = '© OpenStreetMap contributors';
|
|
||||||
a.href = 'http://www.openstreetmap.org/copyright';
|
|
||||||
|
|
||||||
return a;
|
|
||||||
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
[InternetShortcut]
|
|
||||||
URL=https://github.com/aardgoose/CaveView.js/releases
|
|
@ -1,2 +0,0 @@
|
|||||||
[InternetShortcut]
|
|
||||||
URL=https://aardgoose.github.io/CaveView.js/
|
|
@ -419,8 +419,7 @@ div#scene {
|
|||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script type="text/javascript" src="/javascript/CaveView/js/CaveView.js" ></script>
|
<script type="text/javascript" src="/javascript/CaveView/js/CaveView2.js" ></script>
|
||||||
<script type="text/javascript" src="/javascript/CaveView/lib/proj4.js" ></script>
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" >
|
<script type="text/javascript" >
|
||||||
@ -428,7 +427,7 @@ div#scene {
|
|||||||
|
|
||||||
// display the user interface - and a blank canvas
|
// display the user interface - and a blank canvas
|
||||||
// the configuration object specifies the location of CaveView, surveys and terrain files
|
// the configuration object specifies the location of CaveView, surveys and terrain files
|
||||||
CV.UI.init( 'scene', {
|
const viewer = new CV2.CaveViewer( 'scene', {
|
||||||
home: '/javascript/CaveView/',
|
home: '/javascript/CaveView/',
|
||||||
surveyDirectory: '/expowebcache/3d/',
|
surveyDirectory: '/expowebcache/3d/',
|
||||||
terrainDirectory: '/loser/surface/terrain/' // cannot work, apache not handling this url
|
terrainDirectory: '/loser/surface/terrain/' // cannot work, apache not handling this url
|
||||||
@ -436,10 +435,11 @@ div#scene {
|
|||||||
|
|
||||||
// load a single survey to display
|
// load a single survey to display
|
||||||
// Note the special code in views.caves.py to do this. The appropriate .svx/.3d file may not be simply the cave name +.3d
|
// Note the special code in views.caves.py to do this. The appropriate .svx/.3d file may not be simply the cave name +.3d
|
||||||
CV.UI.loadCave('{{svx3d}}.3d');
|
//const ui = new CV2.CaveViewUI( viewer );
|
||||||
|
|
||||||
|
ui.loadCave('{{svx3d}}.3d');
|
||||||
}
|
}
|
||||||
// comment out loading CaveView until we have fixed everything
|
window.onload = onLoad;
|
||||||
// window.onload = onLoad;
|
|
||||||
</script>
|
</script>
|
||||||
{% endif %} <!-- all the above only loads if cave.survex_file is not empty-->
|
{% endif %} <!-- all the above only loads if cave.survex_file is not empty-->
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|