summaryrefslogtreecommitdiff
path: root/map.js
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@ffgraz.net>2013-11-12 18:24:00 +0000
committerOthmar Gsenger <otti@ffgraz.net>2013-11-12 18:24:00 +0000
commita47c4eecff79c1d57650b46c437b628d873705b2 (patch)
tree9d53fe963419ce8965fe237be47784c1afd84510 /map.js
parentf6be9edd401664d95e60ae3c81aeaf36723ba891 (diff)
bisher uncommitete aenderungen am www.ffgraz.net (nicht von mir)
Diffstat (limited to 'map.js')
-rw-r--r--map.js264
1 files changed, 246 insertions, 18 deletions
diff --git a/map.js b/map.js
index 3ac9685..e51aea5 100644
--- a/map.js
+++ b/map.js
@@ -1,10 +1,11 @@
var map = null;
+var linkinfo;
var physicalMaxLevel;
var geocoder = null;
var reloadcon = null;
var countboxText = null;
var overlays = new Array();
-overlays["newmarker"] = null;
+overlays["new"] = null;
overlays["ruler"] = new Array();
overlays["locations"] = new Array();
overlays["links"] = new Array();
@@ -21,10 +22,25 @@ function initialize(lat, lng, res) {
map.disableDoubleClickZoom();
map.enableScrollWheelZoom();
- map.removeMapType(G_HYBRID_MAP);
- map.removeMapType(G_SATELLITE_MAP);
+// map.removeMapType(G_HYBRID_MAP);
+// map.removeMapType(G_SATELLITE_MAP);
map.addMapType(G_PHYSICAL_MAP);
- map.setMapType(G_PHYSICAL_MAP);
+// map.setMapType(G_HYBRID_MAP);
+
+ // openStreetMap
+ var copyOSM = new GCopyrightCollection("<a href=\"http://www.openstreetmap.org/\">OpenStreetMap</a>");
+ var copyOGDGraz = new GCopyrightCollection("Open Government Data Graz");
+ copyOSM.addCopyright(new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, " "));
+ var tilesOsmarender = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tah.openstreetmap.org/Tiles/tile/{Z}/{X}/{Y}.png'});
+ var mapOsmarender = new GMapType([tilesOsmarender], G_NORMAL_MAP.getProjection(), "openSM", {urlArg: 'y'});
+ map.addMapType(mapOsmarender);
+ var tilesMapnik = new GTileLayer(copyOSM, 1, 17, {tileUrlTemplate: 'http://tile.openstreetmap.org/{Z}/{X}/{Y}.png'});
+ var mapMapnik = new GMapType([tilesMapnik], G_NORMAL_MAP.getProjection(), "Mapnik", {urlArg: 'x'});
+ map.addMapType(mapMapnik);
+// var tilesOpenGeoServer = new GTileLayer(copyOGDGraz, 1, 17, {tileUrlTemplate: 'http://services.opengeoserver.org/tiles/1.0.0/globe.aerial_EPSG3857/${Z}/${X}/${Y}.png?origin=nw'});
+// var mapOpenGeoServer = new GMapType([tilesOpenGeoServer], G_NORMAL_MAP.getProjection(), "OpenGeoServer");
+// map.addMapType(mapOpenGeoServer);
+
physicalMaxLevel = map.getCurrentMapType().getMaximumResolution();
if(res > physicalMaxLevel) {
map.setMapType(G_NORMAL_MAP);
@@ -39,11 +55,19 @@ function initialize(lat, lng, res) {
GEvent.addListener(map, "addoverlay", onAddOverlay);
GEvent.addListener(map, "zoomend", onZoom);
GEvent.addListener(map, "click", onMapClick);
-
+
+ lineinfo = document.createElement("div");
+ document.getElementById("map").appendChild(lineinfo);
+ lineinfo.style.visibility = "hidden"
+
+ dnsinfo = document.createElement("div");
+ document.getElementById("map").appendChild(dnsinfo);
+ dnsinfo.style.visibility = "hidden"
+
var mt = map.getMapTypes();
for (var i=0; i<mt.length; i++) {
mt[i].getMinimumResolution = function() {return 0;}
- mt[i].getMaximumResolution = function() {return 17;}
+ mt[i].getMaximumResolution = function() {return 22;}
}
geocoder = new GClientGeocoder();
@@ -72,7 +96,7 @@ function onAddOverlay(overlay) {
switch(overlay.overlaytype) {
case "location": overlays["locations"].push(overlay); break;
case "link": overlays["links"].push(overlay); break;
- case "newmarker": {
+ case "new": {
if(overlays["newmarker"]) {
map.removeOverlay(overlays["newmarker"]);
}
@@ -92,13 +116,14 @@ function onAddOverlay(overlay) {
function onZoom(oldLevel, newLevel)
{
if(newLevel > physicalMaxLevel) {
- map.setMapType(G_NORMAL_MAP);
+ // map.setMapType(G_SATELLITE_MAP);
}
}
function onMapClick(overlay, point)
{
if(!overlay) {
+ map.setCenter(point);
setNewMarker(point);
}
}
@@ -162,6 +187,7 @@ function Location(element) {
location.pixel_y = parseInt(element.getAttribute("pixel_y"));
location.state = element.getAttribute("state");
location.gallery_link = element.getAttribute("gallery_link");
+ location.dnsnames = element.getAttribute("router_links");
return location;
}
@@ -172,18 +198,64 @@ function onLocationClick(latlng) {
html += '<table class="locinfo">';
html += '<tr><td>Breitengrad:</td><td>&nbsp;</td><td>' + convertCoords(locations[this.locid].point.lat()) + '</td></tr>';
html += '<tr><td>Längengrad:</td><td>&nbsp;</td><td>' + convertCoords(locations[this.locid].point.lng()) + '</td></tr>';
- html += '<tr><td>Datenbank:</td><td>&nbsp;</td><td><a href="http://manman.graz.funkfeuer.at/location/show/' + this.locid + '">Link</td></tr>';
- html += '<tr><td>Smokeping:</td><td>&nbsp;</td><td><a href="http://www.graz.funkfeuer.at/cgi-bin/smokeping.cgi?target=FunkFeuer.' + locations[this.locid].name + '">Link</td></tr>';
+ html += '<tr><td>Datenbank:</td><td>&nbsp;</td><td><a href="http://manman.graz.funkfeuer.at/location/show/' + this.locid + '" target="_blank">Link-Database</td></tr>';
+ html += '<tr><td>Smokeping:</td><td>&nbsp;</td><td><a href="http://stats.graz.funkfeuer.at/smokeping/?target=Funkfeuer.' + locations[this.locid].name + '" target="_blank">Link-Smokeping</td></tr>';
if(locations[this.locid].gallery_link) {
- html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="' + locations[this.locid].gallery_link + '">Link</td></tr>';
+ html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="' + locations[this.locid].gallery_link + '" target="_blank">Link-Galerie/Knoten</td></tr>';
} else {
- html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="http://gallery.funkfeuer.at/v/Graz/Knoten/">Link</td></tr>';
- }
+ html += '<tr><td>Galerie:</td><td>&nbsp;</td><td><a href="http://gallery.funkfeuer.at/v/Graz/Knoten/" target="_blank">Link-Galerie</td></tr>';
+ }
+ if (locations[this.locid].dnsnames){
+ var dnsname = locations[this.locid].dnsnames.split(";");
+ for (var i = 0;i < dnsname.length; ++i){
+ if (dnsname[i]!==""){
+ if(dnsname[i].indexOf(" (")>=0) {
+ link=dnsname[i].substring(0,dnsname[i].indexOf(" ("));
+ } else {
+ link=dnsname[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsname[i]+'</td></tr>';
+ }
+ }
+ }
html += '</table>';
html += '</div>';
this.openInfoWindowHtml(html);
}
+function onLineClick(line,latlng) {
+// var html ='<div id="linkbox" class="box">';
+ var html ='<div class="locinfo">';
+ html += '<b>'+line.name+'</b>';
+ html += '<table class="linkinfo">';
+ if (line.dnsfrom){
+ var dnsfrom = line.dnsfrom.split(";");
+ for (var i = 0;i < dnsfrom.length; ++i){
+ if(dnsfrom[i].indexOf(" (")>=0) {
+ link=dnsfrom[i].substring(0,dnsfrom[i].indexOf(" ("));
+ } else {
+ link=dnsfrom[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsfrom[i]+'</td></tr>';
+ }
+ }
+
+ if(line.dnsto){
+ var dnsto = line.dnsto.split(";");
+ for (var i = 0;i < dnsto.length; ++i){
+ if(dnsto[i].indexOf(" (")>=0) {
+ link=dnsto[i].substring(0,dnsto[i].indexOf(" ("));
+ } else {
+ link=dnsto[i];
+ }
+ html += '<tr><td> Router:</td><td>&nbsp;</td><td><a href="http://' + link+ '.ext.graz.funkfeuer.at/" target="_blank">'+dnsto[i]+'</td></tr>';
+ }
+ }
+ html += '</table>';
+ html += '</div>';
+ map.openInfoWindowHtml(latlng,html);
+}
+
function convertCoords(x) {
var deg = Math.floor(x);
var min = (x - deg) * 60;
@@ -194,13 +266,33 @@ function convertCoords(x) {
function drawLinks(xmlData) {
var element = xmlData.getElementsByTagName("link");
for (var i = 0; i< element.length; i++) {
+ var state;
+ var color;
+ var textcolor;
+ var width;
+ state="Unbekannt"
var id = element[i].getAttribute("from") + "-" + element[i].getAttribute("to");
links[id] = new Link(element[i]);
var line = new GPolyline([links[id].frompoint, links[id].topoint], makeColor(Math.floor(links[id].value)), makeWeight(Math.floor(links[id].value)));
+ line.name = id;
+ line.textcolor = textcolor;
+ line.state = state;
line.overlaytype = "link";
line.linkid = id;
+ line.dnsfrom = element[i].getAttribute("dnsfrom");
+ line.dnsto = element[i].getAttribute("dnsto");
+ line.Routerfrom = element[i].getAttribute("from");
+ line.Routerto = element[i].getAttribute("to");
+ GEvent.addListener(line, "mouseout", function() { lineinfo.style.visibility = "hidden"; });
+ GEvent.addListener(line, "mouseover", function(point) { showLinkInfo(this, point)});
+ GEvent.addListener(line, "click", function(point){onLineClick(this,point)});
+// GEvent.addListener(line, "click", function(latlng){map.openInfoWindowHtml(latlng, message)});
+
map.addOverlay(line);
+ }
+ if(document.visibleform.elements["defaultroute"].checked) {
+ toggleVisible("defaultroute");
}
if(document.visibleform.elements["bad"].checked) {
toggleVisible("bad");
@@ -214,6 +306,80 @@ function drawLinks(xmlData) {
if(document.visibleform.elements["tunnel"].checked) {
toggleVisible("tunnel");
}
+ if(document.visibleform.elements["2.4channel"].checked) {
+ toggleVisible("2.4channel");
+ }
+ if(document.visibleform.elements["channel1"].checked) {
+ toggleVisible("channel1");
+ }
+ if(document.visibleform.elements["channel2"].checked) {
+ toggleVisible("channel2");
+ }
+ if(document.visibleform.elements["channel3"].checked) {
+ toggleVisible("channel3");
+ }
+ if(document.visibleform.elements["channel4"].checked) {
+ toggleVisible("channel4");
+ }
+ if(document.visibleform.elements["channel5"].checked) {
+ toggleVisible("channel5");
+ }
+ if(document.visibleform.elements["channel6"].checked) {
+ toggleVisible("channel6");
+ }
+ if(document.visibleform.elements["channel7"].checked) {
+ toggleVisible("channel7");
+ }
+ if(document.visibleform.elements["channel8"].checked) {
+ toggleVisible("channel8");
+ }
+ if(document.visibleform.elements["channel9"].checked) {
+ toggleVisible("channel9");
+ }
+ if(document.visibleform.elements["channel10"].checked) {
+ toggleVisible("channel10");
+ }
+ if(document.visibleform.elements["channel11"].checked) {
+ toggleVisible("channel11");
+ }
+ if(document.visibleform.elements["channel12"].checked) {
+ toggleVisible("channel12");
+ }
+ if(document.visibleform.elements["channel13"].checked) {
+ toggleVisible("channel13");
+ }
+ if(document.visibleform.elements["5channel"].checked) {
+ toggleVisible("5channel");
+ }
+ if(document.visibleform.elements["undef"].checked) {
+ toggleVisible("undef");
+ }
+}
+function showLinkInfo(link, point) {
+ var html = '<div id="linkbox" class="box" style="border-color: ' + link.color + '">';
+ if((links[link.name].frequence !== "undef") && (links[link.name].frequence !== "")){
+ html += '<strong>Frequenz:</strong> ' + links[link.name].frequence + '<br />';
+ } else {
+ html += '<strong>Frequenz:</strong> undef <br />';
+ }
+ if(links[link.name].channel !== "undef") {
+ html += '<strong>Kanal:</strong> ' + links[link.name].channel + '<br />';
+ } else {
+ html += '<strong>Kanal:</strong> undef <br />';
+ }
+ if (links[link.name].value !==-1){
+ html += '<strong>Mittlerer ETX:</strong> ' + links[link.name].value + '<br />';
+ } else {
+ html += '<strong>Mittlerer ETX:</strong> undef <br />';
+ }
+ html += '<strong>Name:</strong> ' + link.name + '<br />';
+ html += '<strong>Länge:</strong> ' + link.getLength().toFixed(0) + ' m<br />';
+ html += '</div>';
+ lineinfo.innerHTML = html;
+ var pos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(180, 0));
+
+ pos.apply(lineinfo);
+ lineinfo.style.visibility = "visible";
}
function Link(element) {
@@ -231,7 +397,9 @@ function Link(element) {
link.topoint = new GLatLng(lat, lng);
link.value = parseFloat(element.getAttribute("value"));
-
+ link.channel = element.getAttribute("channel");
+ link.defaultroute = element.getAttribute("defaultroute");
+ link.frequence = element.getAttribute("frequence");
return link;
}
@@ -279,13 +447,64 @@ function makeIcon(type) {
function toggleVisible(element) {
var elements = Object();
+ if (element=='bad' || element=='middle' || element=='good'){
+ document.visibleform.elements["2.4channel"].checked=false;
+ document.visibleform.elements["channel1"].checked=false;
+ document.visibleform.elements["channel2"].checked=false;
+ document.visibleform.elements["channel3"].checked=false;
+ document.visibleform.elements["channel4"].checked=false;
+ document.visibleform.elements["channel5"].checked=false;
+ document.visibleform.elements["channel6"].checked=false;
+ document.visibleform.elements["channel7"].checked=false;
+ document.visibleform.elements["channel8"].checked=false;
+ document.visibleform.elements["channel9"].checked=false;
+ document.visibleform.elements["channel10"].checked=false;
+ document.visibleform.elements["channel11"].checked=false;
+ document.visibleform.elements["channel12"].checked=false;
+ document.visibleform.elements["channel13"].checked=false;
+ document.visibleform.elements["5channel"].checked=false;
+ document.visibleform.elements["undef"].checked=false;
+ }
+ if (element=='2.4channel'){
+ document.visibleform.elements["channel1"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel2"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel3"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel4"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel5"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel6"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel7"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel8"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel9"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel10"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel11"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel12"].checked=document.visibleform.elements["2.4channel"].checked;
+ document.visibleform.elements["channel13"].checked=document.visibleform.elements["2.4channel"].checked;
+ }
switch(element) {
+ case 'defaultroute': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].defaultroute == '0');"); break;
case 'offline': elements.overlays = overlays["locations"]; elements.select = new Function("id", "return (locations[overlays['locations'][id].locid].state == 'offline');"); break;
case 'online': elements.overlays = overlays["locations"]; elements.select = new Function("id", "return (locations[overlays['locations'][id].locid].state != 'offline');"); break;
case 'bad': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 6);"); break;
case 'middle': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 3 && links[overlays['links'][id].linkid].value < 6);"); break;
case 'good': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value >= 0 && links[overlays['links'][id].linkid].value < 3);"); break;
case 'tunnel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].value == -1);"); break;
+ case 'channel1': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '1');"); break;
+ case 'channel2': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '2');"); break;
+ case 'channel3': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '3');"); break;
+ case 'channel4': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '4');"); break;
+ case 'channel5': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '5');"); break;
+ case 'channel6': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '6');"); break;
+ case 'channel7': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '7');"); break;
+ case 'channel8': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '8');"); break;
+ case 'channel9': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '9');"); break;
+ case 'channel10': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '10');"); break;
+ case 'channel11': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '11');"); break;
+ case 'channel12': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '12');"); break;
+ case 'channel13': document.visibleform.elements["2.4channel"].checked=false; elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].channel == '13');"); break;
+ case 'undef': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence == 'undef');"); break;
+ case '2.4channel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence == '2.4');"); break;
+ case '5channel': elements.overlays = overlays["links"]; elements.select = new Function("id", "return (links[overlays['links'][id].linkid].frequence !=='2.4' && links[overlays['links'][id].linkid].frequence !=='undef');"); break;
+
}
if(document.visibleform.elements[element].checked) {
@@ -336,7 +555,8 @@ function addNewNodeText(point) {
return html;
}
-function setNewMarker(point) {
+function setNewMarker(point) {
+/*
var marker = new GMarker(point,{icon: makeIcon('newnode'), draggable: true});
GEvent.addListener(marker, "dragstart",
function() {
@@ -362,6 +582,14 @@ function setNewMarker(point) {
marker.overlaytype = "newmarker";
map.addOverlay(marker);
marker.openInfoWindowHtml(addNewNodeText(point));
+*/
+ var marker = new GMarker(point,makeIcon('newnode'));
+ GEvent.addListener(marker,"infowindowclose",function () {
+ map.removeOverlay(marker);
+ });
+
+ map.addOverlay(marker);
+ marker.openInfoWindowHtml(addNewNodeText(point));
}
function fflogin(username, password) {
@@ -439,7 +667,7 @@ function showFFLogout(username) {
function showAddress(address) {
if (geocoder) {
- address += ", Graz, Austria";
+// address += ", Graz, Austria";
geocoder.getLatLng(address,
function(point) {
if (!point) {
@@ -511,7 +739,7 @@ RulerControl.prototype.initialize = function(map) {
dist = (parseInt(dist)/1000).toFixed(1) + " km";
}
distText.data = "Entfernung: " + dist;
- var poly = new GPolyline(line,'#FFFF00', 8, 1)
+ var poly = new GPolyline(line,'#FFFF00', 3, 1)
poly.overlaytype = "ruler";
poly.overlaysubtype = "line";
map.addOverlay(poly);
@@ -576,5 +804,5 @@ RulerControl.prototype.initialize = function(map) {
}
RulerControl.prototype.getDefaultPosition = function() {
- return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(7, 7));
+ return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(7, 7));
}