Commit 7cf070fb authored by yorn's avatar yorn
Browse files

first commit

parents
arg_separator.output = ";"
arg_separator.input = ";&"
web: vendor/bin/heroku-php-nginx -C nginx_app.conf
UNINETT-provided OpenStreetMaps mirror
======================================
Reverse caching proxy for OpenStreetMap tiles, based on ProxySimplePHP.
This service shows how information can be cached on NOVA PaaS,
and it provides an easy way to include OpenStreetMap tiles in HTTPS-enabled sites.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>UNINETT OpenStreetMap caching proxy sample page</title>
<link rel="stylesheet" href="leaflet.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="leaflet.js" type="text/javascript"></script>
<style type="text/css">
body, html, #map {
margin: 0;
height: 100%;
}
</style>
<div id="map"></div>
<script type="application/javascript">
// create a map in the "map" div, set the view to a given place and zoom
var map = L.map('map').setView([63.41586195, 10.39499690], 13);
// add an OpenStreetMap tile layer
L.tileLayer('tiles/bw-mapnik/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap<\/a> contributors'
}).addTo(map);
// add a marker in the given location, attach some popup content to it and open the popup
L.marker([63.41586195, 10.39499690]).addTo(map)
.bindPopup('UNINETT AS')
.openPopup();
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>UNINETT OpenStreetMap caching proxy sample page</title>
<link rel="stylesheet" href="leaflet.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="leaflet.js" type="text/javascript"></script>
<style type="text/css">
body, html, #map {
margin: 0;
height: 100%;
}
</style>
<div id="map"></div>
<script type="application/javascript">
// create a map in the "map" div, set the view to a given place and zoom
var map = L.map('map').setView([63.41586195, 10.39499690], 13);
// add an OpenStreetMap tile layer
L.tileLayer('tiles/cycle/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap<\/a> contributors'
}).addTo(map);
// add a marker in the given location, attach some popup content to it and open the popup
L.marker([63.41586195, 10.39499690]).addTo(map)
.bindPopup('UNINETT AS')
.openPopup();
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>UNINETT OpenStreetMap caching proxy sample page</title>
<link rel="stylesheet" href="leaflet.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="leaflet.js" type="text/javascript"></script>
<style type="text/css">
body, html, #map {
margin: 0;
height: 100%;
}
</style>
<div id="map"></div>
<script type="application/javascript">
// create a map in the "map" div, set the view to a given place and zoom
var map = L.map('map').setView([63.41586195, 10.39499690], 13);
// add an OpenStreetMap tile layer
L.tileLayer('tiles/hot/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap<\/a> contributors'
}).addTo(map);
// add a marker in the given location, attach some popup content to it and open the popup
L.marker([63.41586195, 10.39499690]).addTo(map)
.bindPopup('UNINETT AS')
.openPopup();
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>UNINETT OpenStreetMap caching proxy sample page</title>
<link rel="stylesheet" href="leaflet.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="leaflet.js" type="text/javascript"></script>
<style type="text/css">
body, html, #map {
margin: 0;
height: 100%;
}
</style>
<div id="map"></div>
<script type="application/javascript">
var url = 'tiles/{id}/{z}/{x}/{y}';
var mapboxAttribution = '';
var bw_mapnik = L.tileLayer(url, {id: 'bw-mapnik', attribution: mapboxAttribution});
var hot = L.tileLayer(url, {id: 'hot', attribution: mapboxAttribution});
var landscape = L.tileLayer(url, {id: 'landscape', attribution: mapboxAttribution});
var mapquest = L.tileLayer(url, {id: 'mq', attribution: mapboxAttribution});
var outdoors = L.tileLayer(url, {id: 'outdoors', attribution: mapboxAttribution});
var cycle = L.tileLayer(url, {id: 'cycle', attribution: mapboxAttribution});
var mapnik = L.tileLayer(url, {id: 'mapnik', attribution: mapboxAttribution});
var osmde = L.tileLayer(url, {id: 'osmde', attribution: mapboxAttribution});
var transport = L.tileLayer(url, {id: 'transport', attribution: mapboxAttribution});
// create a map in the "map" div, set the view to a given place and zoom
var map = L.map('map', {layers: [ mapquest ]}).setView([63.41586195, 10.39499690], 13);
// add a marker in the given location, attach some popup content to it and open the popup
L.marker([63.41586195, 10.39499690]).addTo(map)
.bindPopup('UNINETT AS')
.openPopup();
L.control.layers({
"Mapnik Black & White": bw_mapnik,
"Humanitarian": hot,
"Landscape": landscape,
"MapQuest Open": mapquest,
"Outdoors": outdoors,
"Cycle map": cycle,
"Mapnik": mapnik,
"OpenStreetMaps .DE": osmde,
"Transport": transport,
}, {}).addTo(map);
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>UNINETT OpenStreetMap caching proxy sample page</title>
<link rel="stylesheet" href="leaflet.css" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="leaflet.js" type="text/javascript"></script>
<style type="text/css">
body, html, #map {
margin: 0;
height: 100%;
}
</style>
<div id="map"></div>
<script type="application/javascript">
// create a map in the "map" div, set the view to a given place and zoom
var map = L.map('map').setView([63.41586195, 10.39499690], 13);
// add an OpenStreetMap tile layer
L.tileLayer('tiles/landscape/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap<\/a> contributors'
}).addTo(map);
// add a marker in the given location, attach some popup content to it and open the popup
L.marker([63.41586195, 10.39499690]).addTo(map)
.bindPopup('UNINETT AS')
.openPopup();
</script>
This diff is collapsed.
/* required styles */
.leaflet-map-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-pane,
.leaflet-tile-container,
.leaflet-overlay-pane,
.leaflet-shadow-pane,
.leaflet-marker-pane,
.leaflet-popup-pane,
.leaflet-overlay-pane svg,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
position: absolute;
left: 0;
top: 0;
}
.leaflet-container {
overflow: hidden;
-ms-touch-action: none;
}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
-webkit-user-drag: none;
}
.leaflet-marker-icon,
.leaflet-marker-shadow {
display: block;
}
/* map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container img {
max-width: none !important;
}
/* stupid Android 2 doesn't understand "max-width: none" properly */
.leaflet-container img.leaflet-image-layer {
max-width: 15000px !important;
}
.leaflet-tile {
filter: inherit;
visibility: hidden;
}
.leaflet-tile-loaded {
visibility: inherit;
}
.leaflet-zoom-box {
width: 0;
height: 0;
}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
-moz-user-select: none;
}
.leaflet-tile-pane { z-index: 2; }
.leaflet-objects-pane { z-index: 3; }
.leaflet-overlay-pane { z-index: 4; }
.leaflet-shadow-pane { z-index: 5; }
.leaflet-marker-pane { z-index: 6; }
.leaflet-popup-pane { z-index: 7; }
.leaflet-vml-shape {
width: 1px;
height: 1px;
}
.lvml {
behavior: url(#default#VML);
display: inline-block;
position: absolute;
}
/* control positioning */
.leaflet-control {
position: relative;
z-index: 7;
pointer-events: auto;
}
.leaflet-top,
.leaflet-bottom {
position: absolute;
z-index: 1000;
pointer-events: none;
}
.leaflet-top {
top: 0;
}
.leaflet-right {
right: 0;
}
.leaflet-bottom {
bottom: 0;
}
.leaflet-left {
left: 0;
}
.leaflet-control {
float: left;
clear: both;
}
.leaflet-right .leaflet-control {
float: right;
}
.leaflet-top .leaflet-control {
margin-top: 10px;
}
.leaflet-bottom .leaflet-control {
margin-bottom: 10px;
}
.leaflet-left .leaflet-control {
margin-left: 10px;
}
.leaflet-right .leaflet-control {
margin-right: 10px;
}
/* zoom and fade animations */
.leaflet-fade-anim .leaflet-tile,
.leaflet-fade-anim .leaflet-popup {
opacity: 0;
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear;
}
.leaflet-fade-anim .leaflet-tile-loaded,
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
opacity: 1;
}
.leaflet-zoom-anim .leaflet-zoom-animated {
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
-o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile,
.leaflet-touching .leaflet-zoom-animated {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.leaflet-zoom-anim .leaflet-zoom-hide {
visibility: hidden;
}
/* cursors */
.leaflet-clickable {
cursor: pointer;
}
.leaflet-container {
cursor: -webkit-grab;
cursor: -moz-grab;
}
.leaflet-popup-pane,
.leaflet-control {
cursor: auto;
}
.leaflet-dragging .leaflet-container,
.leaflet-dragging .leaflet-clickable {
cursor: move;
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
}
/* visual tweaks */
.leaflet-container {
background: #ddd;
outline: 0;
}
.leaflet-container a {
color: #0078A8;
}
.leaflet-container a.leaflet-active {
outline: 2px solid orange;
}
.leaflet-zoom-box {
border: 2px dotted #38f;
background: rgba(255,255,255,0.5);
}
/* general typography */
.leaflet-container {
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
}
/* general toolbar styles */
.leaflet-bar {
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
border-radius: 4px;
}
.leaflet-bar a,
.leaflet-bar a:hover {
background-color: #fff;
border-bottom: 1px solid #ccc;
width: 26px;
height: 26px;
line-height: 26px;
display: block;
text-align: center;
text-decoration: none;
color: black;
}
.leaflet-bar a,
.leaflet-control-layers-toggle {
background-position: 50% 50%;
background-repeat: no-repeat;
display: block;
}
.leaflet-bar a:hover {
background-color: #f4f4f4;
}
.leaflet-bar a:first-child {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.leaflet-bar a:last-child {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-bottom: none;
}
.leaflet-bar a.leaflet-disabled {
cursor: default;
background-color: #f4f4f4;
color: #bbb;
}
.leaflet-touch .leaflet-bar a {
width: 30px;
height: 30px;
line-height: 30px;
}
/* zoom control */
.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
font: bold 18px 'Lucida Console', Monaco, monospace;
text-indent: 1px;
}
.leaflet-control-zoom-out {
font-size: 20px;
}
.leaflet-touch .leaflet-control-zoom-in {
font-size: 22px;
}
.leaflet-touch .leaflet-control-zoom-out {
font-size: 24px;
}
/* layers control */
.leaflet-control-layers {
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
background: #fff;
border-radius: 5px;
}
.leaflet-control-layers-toggle {
background-image: url(images/layers.png);
width: 36px;
height: 36px;
}
.leaflet-retina .leaflet-control-layers-toggle {
background-image: url(images/layers-2x.png);
background-size: 26px 26px;
}
.leaflet-touch .leaflet-control-layers-toggle {
width: 44px;
height: 44px;
}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
display: none;
}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
display: block;
position: relative;
}
.leaflet-control-layers-expanded {
padding: 6px 10px 6px 6px;
color: #333;
background: #fff;
}
.leaflet-control-layers-selector {
margin-top: 2px;
position: relative;
top: 1px;
}
.leaflet-control-layers label {
display: block;
}
.leaflet-control-layers-separator {
height: 0;
border-top: 1px solid #ddd;
margin: 5px -10px 5px -6px;
}
/* attribution and scale controls */
.leaflet-container .leaflet-control-attribution {
background: #fff;
background: rgba(255, 255, 255, 0.7);
margin: 0;
}
.leaflet-control-attribution,
.leaflet-control-scale-line {
padding: 0 5px;
color: #333;
}
.leaflet-control-attribution a {
text-decoration: none;
}
.leaflet-control-attribution a:hover {
text-decoration: underline;
}
.leaflet-container .leaflet-control-attribution,
.leaflet-container .leaflet-control-scale {
font-size: 11px;
}
.leaflet-left .leaflet-control-scale {
margin-left: 5px;
}
.leaflet-bottom .leaflet-control-scale {
margin-bottom: 5px;
}
.leaflet-control-scale-line {
border: 2px solid #777;
border-top: none;
line-height: 1.1;
padding: 2px 5px 1px;
font-size: 11px;
white-space: nowrap;
overflow: hidden;
-moz-box-sizing: content-box;
box-sizing: content-box;
background: #fff;
background: rgba(255, 255, 255, 0.5);
}
.leaflet-control-scale-line:not(:first-child) {
border-top: 2px solid #777;
border-bottom: none;
margin-top: -2px;
}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
border-bottom: 2px solid #777;
}
.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
box-shadow: none;
}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
border: 2px solid rgba(0,0,0,0.2);
background-clip: padding-box;
}
/* popup */
.leaflet-popup {
position: absolute;
text-align: center;
}
.leaflet-popup-content-wrapper {
padding: 1px;
text-align: left;
border-radius: 12px;
}
.leaflet-popup-content {
margin: 13px 19px;
line-height: 1.4;
}
.leaflet-popup-content p {
margin: 18px 0;
}
.leaflet-popup-tip-container {
margin: 0 auto;
width: 40px;
height: 20px;
position: relative;
overflow: hidden;
}
.leaflet-popup-tip {
width: 17px;
height: 17px;
padding: 1px;
margin: -10px auto 0;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
background: white;
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
}
.leaflet-container a.leaflet-popup-close-button {
position: absolute;
top: 0;
right: 0;
padding: 4px 4px 0 0;
text-align: center;
width: 18px;