add some map logic...
This commit is contained in:
parent
0420b3efbd
commit
857eee185e
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"html/template"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
@ -13,11 +14,14 @@ import (
|
||||||
|
|
||||||
type OneMetric struct {
|
type OneMetric struct {
|
||||||
Deveui string
|
Deveui string
|
||||||
|
DeveuiJS template.JS
|
||||||
Alias string
|
Alias string
|
||||||
Readonly bool
|
Readonly bool
|
||||||
Timestamp string
|
Timestamp string
|
||||||
Lat string
|
Lat string
|
||||||
Lon string
|
Lon string
|
||||||
|
LatJS template.JS
|
||||||
|
LonJS template.JS
|
||||||
Vbat string
|
Vbat string
|
||||||
Fw string
|
Fw string
|
||||||
BatteryPercent string
|
BatteryPercent string
|
||||||
|
|
@ -336,8 +340,10 @@ func getLastMetrics(deveui string) OneMetric {
|
||||||
field := s[7]
|
field := s[7]
|
||||||
if field == "lat" {
|
if field == "lat" {
|
||||||
res.Lat = value
|
res.Lat = value
|
||||||
|
res.LatJS = template.JS(value)
|
||||||
} else if field == "lon" {
|
} else if field == "lon" {
|
||||||
res.Lon = value
|
res.Lon = value
|
||||||
|
res.LonJS = template.JS(value)
|
||||||
} else if field == "vbat" {
|
} else if field == "vbat" {
|
||||||
res.Vbat = value
|
res.Vbat = value
|
||||||
} else if field == "fw" {
|
} else if field == "fw" {
|
||||||
|
|
@ -346,6 +352,7 @@ func getLastMetrics(deveui string) OneMetric {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
res.Deveui = deveui
|
res.Deveui = deveui
|
||||||
|
res.DeveuiJS = template.JS(deveui)
|
||||||
res.Alias = getDevAlias(deveui)
|
res.Alias = getDevAlias(deveui)
|
||||||
res.Readonly = false
|
res.Readonly = false
|
||||||
res.ActiveUntil = getActiveUntil(deveui)
|
res.ActiveUntil = getActiveUntil(deveui)
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,22 @@ Sie erhalten eine E-Mail, sobald die Zahlung erfolgreich abgeschlossen ist.
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script src="https://api3.geo.admin.ch/loader.js?lang=en&version=4.4.2" type="text/javascript"></script>
|
||||||
|
<div id="map_{{.Deveui}}" class="map"></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var layer = ga.layer.create('ch.swisstopo.pixelkarte-farbe');
|
||||||
|
var map_{{.DeveuiJS}} = new ga.Map({
|
||||||
|
target: 'map_{{.Deveui}}',
|
||||||
|
layers: [layer],
|
||||||
|
view: new ol.View({
|
||||||
|
center: ol.proj.fromLonLat([{{.LonJS}}, {{.LatJS}}],"EPSG:2056"),
|
||||||
|
resolution: 20
|
||||||
|
})
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<div class="has-text-centered">
|
<div class="has-text-centered">
|
||||||
<span class="is-size-6 has-text-centered">Abo aktiv bis</span>
|
<span class="is-size-6 has-text-centered">Abo aktiv bis</span>
|
||||||
<span class="paid_until is-size-6 has-text-centered">{{.ActiveUntil}}</span>
|
<span class="paid_until is-size-6 has-text-centered">{{.ActiveUntil}}</span>
|
||||||
|
|
@ -161,13 +177,10 @@ Sie erhalten eine E-Mail, sobald die Zahlung erfolgreich abgeschlossen ist.
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment-with-locales.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment-with-locales.min.js"></script>
|
||||||
|
|
||||||
<script src="static/js/scales.js"></script>
|
<script src="static/js/scales.js"></script>
|
||||||
|
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<h4>Bitte zuerst <a href="login.html">einloggen</a></h4>
|
<h4>Bitte zuerst <a href="login.html">einloggen</a></h4>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
.map {
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
.popup {
|
||||||
|
background-color: white;
|
||||||
|
padding-left: 8px;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
padding-top: 8px;
|
||||||
|
width: 220px;
|
||||||
|
color: #555;
|
||||||
|
font: 11px tahoma,arial,verdana,sans-serif;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
margin-top: -4px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.subtitle {
|
||||||
|
font-style: normal;
|
||||||
|
margin-bottom: -3px;
|
||||||
|
margin-top: -5px;
|
||||||
|
}
|
||||||
|
.middle {
|
||||||
|
margin-top: -9px;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
cursor: pointer;
|
||||||
|
text-decoration: none;
|
||||||
|
position: absolute;
|
||||||
|
top: 2px;
|
||||||
|
right: 8px;
|
||||||
|
font-size: larger;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
// Create a GeoAdmin Map
|
||||||
|
var map = new ga.Map({
|
||||||
|
|
||||||
|
// Define the div where the map is placed
|
||||||
|
target: 'map',
|
||||||
|
|
||||||
|
// Create a view
|
||||||
|
view: new ol.View({
|
||||||
|
|
||||||
|
// Define the default resolution
|
||||||
|
// 10 means that one pixel is 10m width and height
|
||||||
|
// List of resolution of the WMTS layers:
|
||||||
|
// 650, 500, 250, 100, 50, 20, 10, 5, 2.5, 2, 1, 0.5, 0.25, 0.1
|
||||||
|
resolution: 650,
|
||||||
|
|
||||||
|
// Define a coordinate CH1903+ (EPSG:2056) for the center of the view
|
||||||
|
center: [2660000, 1190000]
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create a background layer
|
||||||
|
var lyr1 = ga.layer.create('ch.swisstopo.pixelkarte-grau');
|
||||||
|
|
||||||
|
// Add the layers in the map
|
||||||
|
map.addLayer(lyr1);
|
||||||
|
|
||||||
|
var position = [2709136, 1270186];
|
||||||
|
|
||||||
|
// Zoom on the position
|
||||||
|
map.getView().setCenter(position);
|
||||||
|
map.getView().setResolution(10);
|
||||||
|
|
||||||
|
// Create the layer with the icon
|
||||||
|
var vectorLayer = new ol.layer.Vector({
|
||||||
|
source: new ol.source.Vector({
|
||||||
|
features: [new ol.Feature({
|
||||||
|
geometry: new ol.geom.Point(position)
|
||||||
|
})]
|
||||||
|
}),
|
||||||
|
style: new ol.style.Style({
|
||||||
|
image: new ol.style.Icon({
|
||||||
|
anchor: [0.5, 0.5],
|
||||||
|
anchorXUnits: 'fraction',
|
||||||
|
anchorYUnits: 'fraction',
|
||||||
|
src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oLCAwhG8L1qXwAAAJ1SURBVDjLTZPBThRBEIa/6uleYtDVA8QHUGIw4ehVb3Ii+AK+guGid696Ud/AN4BAiFw9ePUAbmK4SIAo7OxuZtnZmZ7umfLQED1U0of6qur/q1oA9PgYWVlBBwNHCGt4v8Ws3GRa9BmPoSimDIc7jEYfqOtD+fw56MYGsruL6GCAPH6Mqjq+f9+jbZ9T1zArYVoo4zFMJsJoBMMh5PkBT55syNu3QZ89QwD07MxxcjJBZJEQFGME7+H8HC4vIc+5LqSMRsJsVuDcsnz7Fozu7zuOjvYoy0WKqeKccP8+3LkDvoHJJEVRwHQqVJVydXWXP392dXXVWcpyjbZ9DiggGIGmgdNTOPkFFxc3MMxmUJaCb5TQrBPCmmU43AKg64QQElhVMBrDZJzgsryBoaohBiFGEHllyfNNOoW2BV9DNU8G3gBlCfM51HWCQ4BOQQxo98Ly+3cfa5UQJCVVCZjP07uuUzQNhAhdB5kBI4qau5Y8hyxLlb3/B3gPtU9gDBDbZJPNQIRr2Viqaor3fWJMyU2T3G8aaGOS1ikYAZOBMSlAiLGwVNUOV1cvaVuIMU0S22uwTbvJDFgLCwsJjhFUQXXbEOMHQoC6VrxPBdr4H5wl8N49WFqC27eh11NcD5z7ZFjoHaJ6QIhCjErbpe4qSa+zcOsWLC4mCaqKdYK1X/D1YTrlN68de/s51byPqoIImUnde700Qa8HoIgIIRT8OFqWeRWMrq8j794HHj1YQuQA1XSNxkCWKSJK26YVqgqdfuHnz2WZV0EfPrz+TE+fIl+/oqurDu/XMGYLkU2c62MtwJQs28aYj1TVoQwGQVdWkONj/gL3ho+XUT2DTgAAAABJRU5ErkJggg=='
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
|
map.addLayer(vectorLayer);
|
||||||
|
|
||||||
|
// Create the popup
|
||||||
|
var popup = new ol.Overlay({
|
||||||
|
position: position,
|
||||||
|
element: $(
|
||||||
|
'<div class="popup">' +
|
||||||
|
'<div class="title"<h3>Kdo FU Waffenplaetze</h3></div>' +
|
||||||
|
'<div class="subtitle">' +
|
||||||
|
'<br>Kaserne Auenfeld<br>' +
|
||||||
|
'<div class="middle">' +
|
||||||
|
'<br>8500 Frauenfeld<br>' +
|
||||||
|
'</div>' +
|
||||||
|
'</div>' +
|
||||||
|
'<div class="close">' +
|
||||||
|
'<div type="button" onclick="$(\'.popup\').hide()"<span aria-hidden="true">X</span></div>' +
|
||||||
|
'</div>' +
|
||||||
|
'</div>')
|
||||||
|
});
|
||||||
|
map.addOverlay(popup);
|
||||||
|
alert("Blabla");
|
||||||
Loading…
Reference in New Issue