diff options
| author | Christian Pointner <equinox@ffgraz.net> | 2008-12-07 00:26:18 +0000 | 
|---|---|---|
| committer | Christian Pointner <equinox@ffgraz.net> | 2008-12-07 00:26:18 +0000 | 
| commit | 3d4bdf9088184500442c451b237fcc2e954a7b21 (patch) | |
| tree | 4b96fc2326710261aca364365564876b0f5600db /map.js | |
| parent | f3902147657cf2773e73f76f7e5fe810d0db6c78 (diff) | |
drawing links now
Diffstat (limited to 'map.js')
| -rw-r--r-- | map.js | 89 | 
1 files changed, 88 insertions, 1 deletions
| @@ -1,13 +1,15 @@  var map = null;  var physicalMaxLevel;  var geocoder = null; +var reloadcon = null;  var countboxText = null;  var overlays = new Array();  overlays["newmarker"] = null;  overlays["ruler"] = new Array();  overlays["locations"] = new Array(); +overlays["links"] = new Array();  var locations = new Array(); -var reloadcon = null; +var links = new Array();  function initialize(lat, lng, res) {    if (!checkBrowser()) { @@ -69,6 +71,7 @@ function checkBrowser() {  function onAddOverlay(overlay) {    switch(overlay.overlaytype) {      case "location": overlays["locations"].push(overlay); break; +    case "link": overlays["links"].push(overlay); break;      case "newmarker": {        if(overlays["newmarker"]) {          map.removeOverlay(overlays["newmarker"]); @@ -114,6 +117,13 @@ function onData(data, responseCode) {    locations = [];    drawLocations(xmlData); +  for(var link in overlays["links"]) { +    map.removeOverlay(overlays["links"][link]); +  } +  overlays["links"] = []; +  links = []; +  drawLinks(xmlData); +    var element = xmlData.getElementsByTagName("count");    var count = element[0].getAttribute("number");    countboxText.data = "Aktiv: " + count; @@ -136,6 +146,9 @@ function drawLocations(xmlData) {    if(document.visibleform.elements["offline"].checked) {      toggleVisible("offline");    } +  if(document.visibleform.elements["online"].checked) { +    toggleVisible("online"); +  }  }  function Location(element) { @@ -177,6 +190,75 @@ function convertCoords(x) {    return deg + "° " + Math.floor(min) + "' " + sec.toFixed(0) + "\"";  } +function drawLinks(xmlData) { +  var element = xmlData.getElementsByTagName("link"); +  for (var i = 0; i< element.length; i++) { +    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.overlaytype = "link"; +    line.linkid = id; +    map.addOverlay(line); +  } +  if(document.visibleform.elements["bad"].checked) { +    toggleVisible("bad"); +  } +  if(document.visibleform.elements["middle"].checked) { +    toggleVisible("middle"); +  } +  if(document.visibleform.elements["good"].checked) { +    toggleVisible("good"); +  } +  if(document.visibleform.elements["tunnel"].checked) { +    toggleVisible("tunnel"); +  } +} + +function Link(element) { +  var link = new Object(); +  link.from = element.getAttribute("from"); +  link.fromid = parseInt(element.getAttribute("fromid")); +  var lat  = parseFloat(element.getAttribute("latfrom")); +  var lng  = parseFloat(element.getAttribute("lngfrom")); +  link.frompoint = new GLatLng(lat, lng); + +  link.to = element.getAttribute("to"); +  link.toid = parseInt(element.getAttribute("toid")); +  lat  = parseFloat(element.getAttribute("latto")); +  lng  = parseFloat(element.getAttribute("lngto")); +  link.topoint = new GLatLng(lat, lng); + +  link.value = parseFloat(element.getAttribute("value")); + +  return link; +} + +function makeColor(value) { +  switch(value) { +    case -1: return '#0000FF'; +    case 0: return '#FF0000'; +    case 1: return '#33bb33'; +    case 2: return '#66bb33'; +    case 3: return '#ff9900'; +    case 4: return '#ffcc00'; +    case 5: return '#cccc33'; +    default: return '#000000' +  } +} + +function makeWeight(value) { +  switch(value) { +    case -1: return 1; +    case 0: return 3; +    case 1: return 3; +    case 3: return 1; +    case 4: return 1; +    case 5: return 1; +    default: return 1; +  } +} +  function addNewNodeText(point) {    var html = "adding location at: <br />\n" + point;    return html; @@ -202,6 +284,11 @@ function toggleVisible(element) {    var elements = Object();    switch(element) {      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;    }    if(document.visibleform.elements[element].checked) { | 
