From 8c9a527fdf9a54699a596e0a6579cc95fb9b4314 Mon Sep 17 00:00:00 2001 From: bfabiszewski Date: Fri, 21 Jun 2013 11:15:09 +0200 Subject: OpenLayers API --- main.js | 200 +++++++++++++++++++++------------------------------------------- 1 file changed, 66 insertions(+), 134 deletions(-) (limited to 'main.js') diff --git a/main.js b/main.js index ab4e094..5fa8d19 100755 --- a/main.js +++ b/main.js @@ -16,126 +16,8 @@ * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -// google maps -function displayTrack(xml,update) { - altitudes.length = 0; - var totalMeters = 0; - var totalSeconds = 0; - // init polyline - var poly = new google.maps.Polyline(polyOptions); - poly.setMap(map); - var path = poly.getPath(); - var latlngbounds = new google.maps.LatLngBounds( ); - var positions = xml.getElementsByTagName('position'); - var posLen = positions.length; - for (var i=0; i'+lang_user+': '+p.username.toUpperCase()+'
'+lang_track+': '+p.trackname.toUpperCase()+ - ''+ - '
'+ - '
'+lang_time+': '+p.dateoccured+'
'+ - ((p.speed != null)?''+lang_speed+': '+(p.speed.toKmH()*factor_kmh)+' '+unit_kmh+'
':'')+ - ((p.altitude != null)?''+lang_altitude+': '+(p.altitude*factor_m).toFixed()+' '+unit_m+'
':'')+'
'+ - ((latest==0)? - ('
'+lang_ttime+': '+p.totalSeconds.toHMS()+'
'+ - ''+lang_aspeed+': '+((p.totalSeconds>0)?((p.totalMeters/p.totalSeconds).toKmH()*factor_kmh).toFixed():0)+' '+unit_kmh+'
'+ - ''+lang_tdistance+': '+(p.totalMeters.toKm()*factor_km).toFixed(2)+' '+unit_km+'
'+'
'):'')+ - '
'+lang_point+' '+(i+1)+' '+lang_of+' '+(posLen)+'
'+ - '
'; - popup = new google.maps.InfoWindow(); - popup.listener = google.maps.event.addListener(marker, 'click', (function(marker,content) { - return function() { - popup.setContent(content); - popup.open(map, marker); - if (document.getElementById('bottom').style.display=='block') { - chart.setSelection([{row:i,column:null}]); - } - } - })(marker,content)); - markers.push(marker); - popups.push(popup); -} - - - -// openstreetmaps -// TODO - - -// general stuff + + // general stuff if (units=='imperial') { factor_kmh = 0.62; //to mph unit_kmh = 'mph'; @@ -177,19 +59,7 @@ function displayChart() { chart = new google.visualization.LineChart(document.getElementById('chart')); chart.draw(data, options); - google.visualization.events.addListener(chart, 'select', function() { - if (popup) {popup.close(); clearTimeout(altTimeout);} - var selection = chart.getSelection()[0]; - if (selection) { - var id = selection.row; - var contentString = '
'+Math.round(altitudes[id]*factor_m)+' '+unit_m+'
'; - popup = new google.maps.InfoWindow({ - content: contentString - }); - popup.open(map,markers[id]); - altTimeout = setTimeout(function() { if (popup) {popup.close();} },2000); - } - }); + addChartEvent(chart); } function toggleChart(i) { @@ -408,5 +278,67 @@ function setTime() { clearInterval(auto); autoReload(); } - } + } +} + +// dynamic change of map api +function loadMapAPI(api) { + document.getElementById("map-canvas").innerHTML = ''; + var url = new Array(); + if (api=='gmaps') { + url.push('api_gmaps.js'); + url.push('https://maps.googleapis.com/maps/api/js?sensor=false&callback=init'); + } + else { + url.push('api_openlayers.js'); + url.push('http://openlayers.org/api/OpenLayers.js'); + } + addScript(url[0]); + waitAndLoad(api,url); +} +var loadTime = 0; +function waitAndLoad(api,url) { + // wait till first script loaded + if (loadTime>5000) { loadTime = 0; alert('Sorry, can\'t load '+api+' API'); return; } + if (loadedAPI!==api) { + setTimeout(function() { loadTime += 50; waitAndLoad(api,url); }, 50); + return; + } + if(!isScriptLoaded(url[1])){ + addScript(url[1]); + } + loadTime = 0; + waitAndInit(api); +} + +function waitAndInit(api) { + // wait till main api loads + if (loadTime>10000) { loadTime = 0; alert('Sorry, can\'t load '+api+' API'); return; } + try { + init(); + } + catch(e) { + setTimeout(function() { loadTime += 50; waitAndInit(api); }, 50); + return; + } + loadTime = 0; + loadTrack(userid,trackid,1); +} + +function addScript(url) { + var tag = document.createElement('script'); + tag.setAttribute('type','text/javascript'); + tag.setAttribute('src', url); + if (typeof tag!='undefined') { + document.getElementsByTagName('head')[0].appendChild(tag); + } +} + +function isScriptLoaded(url) { + scripts = document.getElementsByTagName('script'); + for (var i = scripts.length; i--;) { + // check if url matches src + if (scripts[i].src != '' && url.indexOf(scripts[i].src) !== -1) return true; + } + return false; } -- cgit v1.2.3