<html xmlns="http://www.w3.org/1999/xhtml"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head> |
<head> |
<script src="openlayers/OpenLayers.js"></script> |
<script src="openlayers/OpenLayers.js"></script> |
<SCRIPT TYPE="text/javascript" SRC="OpenStreetMap.js"></SCRIPT> |
<SCRIPT TYPE="text/javascript" SRC="OpenStreetMap.js"></SCRIPT> |
<script type="text/javascript" src="jquery.1.3.2.min.js"></script> |
<script type="text/javascript" src="jquery.1.3.2.min.js"></script> |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
|
function init() |
function init() |
{ |
{ |
// create the ol map object |
// create the ol map object |
var map = new OpenLayers.Map('map'); |
var map = new OpenLayers.Map('map'); |
|
|
var osmtiles = new OpenLayers.Layer.OSM("local", "http://127.0.0.1/Maps/OSM/${z}/${x}/${y}.png") |
var osmtiles = new OpenLayers.Layer.OSM("local", "http://10.0.1.154/tiles/${z}/${x}/${y}.png") |
// use http://open.atlas.free.fr/GMapsTransparenciesImgOver.php and http://code.google.com/p/googletilecutter/ to make tiles |
// use http://open.atlas.free.fr/GMapsTransparenciesImgOver.php and http://code.google.com/p/googletilecutter/ to make tiles |
markers = new OpenLayers.Layer.Markers("Between Stop Markers"); |
markers = new OpenLayers.Layer.Markers("Between Stop Markers"); |
|
|
|
//hanlde mousedown on regions that are not points by reporting latlng |
|
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { |
|
defaultHandlerOptions: { |
|
'single': true, |
|
'double': false, |
|
'pixelTolerance': 0, |
|
'stopSingle': false, |
|
'stopDouble': false |
|
}, |
|
|
|
initialize: function(options) { |
|
this.handlerOptions = OpenLayers.Util.extend( |
|
{}, this.defaultHandlerOptions |
|
); |
|
OpenLayers.Control.prototype.initialize.apply( |
|
this, arguments |
|
); |
|
this.handler = new OpenLayers.Handler.Click( |
|
this, { |
|
'click': this.trigger |
|
}, this.handlerOptions |
|
); |
|
}, |
|
|
|
trigger: function(e) { |
|
var lonlat = map.getLonLatFromViewPortPx(e.xy).transform( |
|
new OpenLayers.Projection("EPSG:900913"), |
|
new OpenLayers.Projection("EPSG:4326") |
|
); |
|
$('form input[name="newlatlng"]').val(lonlat.lat + ";" + lonlat.lon ); |
|
} |
|
|
|
}); |
|
var click = new OpenLayers.Control.Click(); |
|
map.addControl(click); |
|
click.activate(); |
<?php |
<?php |
$conn = pg_connect("dbname=bus user=postgres password=snmc"); |
$conn = pg_connect("dbname=bus user=postgres password=snmc"); |
if (!$conn) { |
if (!$conn) { |
echo "An error occured.\n"; |
echo "An error occured.\n"; |
exit; |
exit; |
} |
} |
$result_stops = pg_query($conn, "Select * FROM stops"); |
$result_stops = pg_query($conn, "Select * FROM stops"); |
|
|
while ($stop = pg_fetch_assoc($result_stops)) { |
while ($stop = pg_fetch_assoc($result_stops)) { |
echo 'marker = new OpenLayers.Marker(new OpenLayers.LonLat(' . ($stop['lng'] / 10000000) . "," . ($stop['lat'] / 10000000) . ') |
echo 'marker = new OpenLayers.Marker(new OpenLayers.LonLat(' . ($stop['lng'] / 10000000) . "," . ($stop['lat'] / 10000000) . ') |
.transform( |
.transform( |
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 |
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 |
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection |
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection |
));'; |
));'; |
|
|
echo ' |
echo ' |
marker.id="' . $stop['geohash'] . '"; |
marker.id="' . $stop['geohash'] . '"; |
markers.addMarker(marker); |
markers.addMarker(marker); |
marker.events.register("mousedown", marker, function() { |
marker.events.register("mousedown", marker, function() { |
|
|
document.getElementById("between_points").innerHTML += this.id+";"; |
document.getElementById("between_points").innerHTML += this.id+";"; |
|
$(\'form input[name="oldgeopo"]\').val(this.id); |
}); |
}); |
'; |
'; |
} |
} |
?> |
?> |
var timeicon = new OpenLayers.Icon("http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png",new OpenLayers.Size(32,32)); |
var timeicon = new OpenLayers.Icon("http://maps.google.com/mapfiles/kml/pushpin/grn-pushpin.png",new OpenLayers.Size(32,32)); |
var timepoints = new OpenLayers.Layer.GeoRSS("Timing Points", "displaytimepoints.georss.php", { icon: timeicon }); |
var timepoints = new OpenLayers.Layer.GeoRSS("Timing Points", "displaytimepoints.georss.php", { icon: timeicon }); |
|
|
map.addLayers([osmtiles, markers,timepoints]); |
map.addLayers([osmtiles, markers,timepoints]); |
map.addControl(new OpenLayers.Control.LayerSwitcher()); |
map.addControl(new OpenLayers.Control.LayerSwitcher()); |
map.zoomToExtent(markers.getDataExtent()); |
map.zoomToExtent(markers.getDataExtent()); |
} |
} |
</script> |
</script> |
<script type="text/javascript"> |
<script type="text/javascript"> |
function submitBetween () { |
function submitBetween () { |
$.post("betweenpoint.submit.php", $("#inputform").serialize(), function(html){ |
$.post("betweenpoint.submit.php", $("#inputform").serialize(), function(html){ |
$("#response").html(html); |
$("#response").html(html); |
//clearForms(); |
//clearForms(); |
return false; |
return false; |
}); |
}); |
}; |
}; |
|
function submitMove () { |
|
$.post("betweenpoint.move.php", $("#moveform").serialize(), function(html){ |
|
$("#response").html(html); |
|
clearForms(); |
|
return false; |
|
}); |
|
}; |
|
function submitDelete () { |
|
$.post("betweenpoint.delete.php", $("#moveform").serialize(), function(html){ |
|
$("#response").html(html); |
|
clearForms(); |
|
return false; |
|
}); |
|
}; |
|
function submitAdd () { |
|
$.post("betweenpoint.add.php", $("#moveform").serialize(), function(html){ |
|
$("#response").html(html); |
|
clearForms(); |
|
return false; |
|
}); |
|
}; |
function OnChange(dropdown) |
function OnChange(dropdown) |
{ |
{ |
var myindex = dropdown.selectedIndex |
var myindex = dropdown.selectedIndex |
var selValue = dropdown.options[myindex].value; |
var selValue = dropdown.options[myindex].value; |
$("#routes").val(selValue.split(":",2)[0]); |
$("#routes").val(selValue.split(":",2)[0]); |
fromto = selValue.split(":",2)[1]; |
fromto = selValue.split(":",2)[1]; |
$("#from").val(fromto.split("->",2)[0]); |
$("#from").val(fromto.split("->",2)[0]); |
$("#to").val(fromto.split("->",2)[1]); |
$("#to").val(fromto.split("->",2)[1]); |
|
document.getElementById("between_points").innerHTML = ""; |
return true; |
return true; |
} |
} |
|
|
// function will clear input elements on each form |
// function will clear input elements on each form |
function clearForms(){ |
function clearForms(){ |
document.getElementById("between_points").innerHTML = ""; |
document.getElementById("between_points").innerHTML = ""; |
// declare element type |
// declare element type |
var type = null; |
var type = null; |
// loop through forms on HTML page |
// loop through forms on HTML page |
for (var x=0; x<document.forms.length; x++){ |
for (var x=0; x<document.forms.length; x++){ |
// loop through each element on form |
// loop through each element on form |
for (var y=0; y<document.forms[x].elements.length; y++){ |
for (var y=0; y<document.forms[x].elements.length; y++){ |
// define element type |
// define element type |
type = document.forms[x].elements[y].type |
type = document.forms[x].elements[y].type |
// alert before erasing form element |
// alert before erasing form element |
//alert('form='+x+' element='+y+' type='+type); |
//alert('form='+x+' element='+y+' type='+type); |
// switch on element type |
// switch on element type |
switch(type){ |
switch(type){ |
case "text": |
case "text": |
case "textarea": |
case "textarea": |
case "password": |
case "password": |
//case "hidden": |
//case "hidden": |
document.forms[x].elements[y].value = ""; |
document.forms[x].elements[y].value = ""; |
break; |
break; |
case "radio": |
case "radio": |
case "checkbox": |
case "checkbox": |
document.forms[x].elements[y].checked = true; |
document.forms[x].elements[y].checked = true; |
break; |
break; |
case "select-one": |
case "select-one": |
document.forms[x].elements[y].options[0].selected = true; |
document.forms[x].elements[y].options[0].selected = true; |
break; |
break; |
case "select-multiple": |
case "select-multiple": |
for (z=0; z<document.forms[x].elements[y].options.length; z++){ |
for (z=0; z<document.forms[x].elements[y].options.length; z++){ |
document.forms[x].elements[y].options[z].selected = false; |
document.forms[x].elements[y].options[z].selected = false; |
} |
} |
break; |
break; |
} |
} |
} |
} |
} |
} |
} |
} |
</script> |
</script> |
|
|
</head> |
</head> |
<body onload="init()"> |
<body onload="init()"> |
<div id="inputpane"><form id="inputform"> |
<div id="inputpane"><form id="inputform"> |
<select name=selectPair onchange='OnChange(this.form.selectPair);'> |
<select name=selectPair onchange='OnChange(this.form.selectPair);'> |
<option>Select a from/to pair...</option> |
<option>Select a from/to pair...</option> |
<?php |
<?php |
include('spyc/spyc.php'); |
include('spyc/spyc.php'); |
//$timetable = Spyc::YAMLLoad('../spyc.yaml'); |
//$timetable = Spyc::YAMLLoad('../spyc.yaml'); |
$path = "maxious-canberra-transit-feed/output/"; |
$path = "maxious-canberra-transit-feed/output/"; |
$dhandle = opendir("maxious-canberra-transit-feed/output/"); |
$dhandle = opendir("maxious-canberra-transit-feed/output/"); |
// define an array to hold the files |
// define an array to hold the files |
$files = array(); |
$files = array(); |
$paths = array(); |
$paths = array(); |
|
|
if ($dhandle) { |
if ($dhandle) { |
// loop through all of the files |
// loop through all of the files |
while (false !== ($fname = readdir($dhandle))) { |
while (false !== ($fname = readdir($dhandle))) { |
if (($fname != '.') && ($fname != '..')) { |
if (($fname != '.') && ($fname != '..')) { |
$timetable = Spyc::YAMLLoad("maxious-canberra-transit-feed/output/" . $fname); |
$timetable = Spyc::YAMLLoad("maxious-canberra-transit-feed/output/" . $fname); |
// Strip off individual platforms because it usually doesn't matter for routes |
// Strip off individual platforms because it usually doesn't matter for routes |
$timetable["time_points"] = preg_replace("/-.* Platform.*/","",$timetable["time_points"]); |
$timetable["time_points"] = preg_replace("/\(Platform.*/","",$timetable["time_points"]); |
for ($i = 0; $i < sizeof($timetable["time_points"]) - 1; $i++) { |
for ($i = 0; $i < sizeof($timetable["time_points"]) - 1; $i++) { |
@$paths[trim($timetable["time_points"][$i]) . "->" . trim($timetable["time_points"][$i + 1])] .= $timetable["short_name"] . ";"; |
$key = trim($timetable["time_points"][$i]) . "->" . trim($timetable["time_points"][$i + 1]); |
|
if (strstr($paths[$key],";" . $timetable["short_name"] . ";") === false) |
|
@$paths[$key] .= $timetable["short_name"] . ";"; |
} |
} |
} |
} |
} |
} |
} |
} |
ksort($paths); |
ksort($paths); |
|
|
$completedPaths = array(); |
$completedPaths = array(); |
$result_betweenstops = pg_query($conn, "Select * FROM between_stops"); |
$result_betweenstops = pg_query($conn, "Select * FROM between_stops"); |
while ($path = pg_fetch_assoc($result_betweenstops)) { |
while ($path = pg_fetch_assoc($result_betweenstops)) { |
$completedPaths[trim($path['fromlocation']) . "->" . trim($path['tolocation'])] .= trim($path['routes']); |
$key = trim($path['fromlocation']) . "->" . trim($path['tolocation']); |
} |
$completedPaths[$key].= trim($path['routes']); |
|
|
|
} |
|
|
|
|
foreach ($paths as $path => $routes) { |
foreach ($paths as $path => $routes) { |
if (!in_array($path, array_keys($completedPaths))) { |
if (!in_array($path, array_keys($completedPaths))) { |
echo "<option value=\"$routes:$path\">" . sizeof(explode(";", $routes)) . " $path</option>\n"; |
echo "<option value=\"$routes:$path\">" . sizeof(explode(";", $routes)) . " $path</option>\n"; |
} else { |
} else { |
$completedRoutes = explode(";", $completedPaths[$path]); |
$completedRoutes = explode(";", $completedPaths[$path]); |
$incompleteRoutes = ""; |
$incompleteRoutes = ""; |
foreach (explode(";", $routes) as $route) { |
foreach (explode(";", $routes) as $route) { |
|
|
if (!in_array($route,$completedRoutes)) { |
if (!in_array($route,$completedRoutes) && strstr($incompleteRoutes,';'.$route.';') === false) { |
$incompleteRoutes .= $route.';'; |
$incompleteRoutes .= $route.';'; |
} |
} |
|
|
} |
} |
if ($incompleteRoutes != "") echo "<option value=\"$incompleteRoutes:$path\">" . sizeof(explode(";", $incompleteRoutes)) . " $path</option>\n"; |
if ($incompleteRoutes != "") { |
|
echo "<option value=\"$incompleteRoutes:$path\">" . sizeof(explode(";", $incompleteRoutes)) . " $path</option>\n"; |
|
} |
} |
} |
|
|
} |
} |
?> |
?> |
</select> |
</select> |
from <input type="text" name="from" id="from"/> |
from <input type="text" name="from" id="from"/> |
to <input type="text" name="to" id="to"/> |
to <input type="text" name="to" id="to"/> |
<br> |
<br> |
on routes <input type="text" name="routes" id="routes"/> |
on routes <input type="text" name="routes" id="routes"/> |
Reverse? <input type="checkbox" name="reverse" id="reverse" checked="true"/> |
Reverse? <input type="checkbox" name="reverse" id="reverse" checked="true"/> |
<input type="button" onclick="javascript:submitBetween()" value="Submit!"> |
<input type="button" onclick="javascript:submitBetween()" value="Submit!"> |
<input type="button" value="Clear" onclick="javascript:clearForms()" title="Start clearForms() JavaScript function"> |
<input type="button" value="Clear" onclick="javascript:clearForms()" title="Start clearForms() JavaScript function"> |
<br> |
<br> |
<textarea name="between_points" id="between_points" rows="1" cols="120"></textarea> |
<textarea name="between_points" id="between_points" rows="1" cols="120"></textarea> |
</form> |
</form> |
|
<form id="moveform"> |
|
oldgeopo <input type="text" name="oldgeopo" id="oldgeopo"/> |
|
newlatlng <input type="text" name="newlatlng" id="newlatlng" size="60"/> |
|
<input type="button" onclick="javascript:submitMove()" value="Move!"> |
|
<input type="button" onclick="javascript:submitAdd()" value="Add!"> |
|
<input type="button" onclick="javascript:submitDelete()" value="Delete!"> |
|
</form> |
<div id="response"> |
<div id="response"> |
<!-- Our message will be echoed out here --> |
<!-- Our message will be echoed out here --> |
</div> |
</div> |
</div> |
</div> |
<div id="map" width="100%" height="100%"></div> |
<div id="map" width="100%" height="100%"></div> |
</body> |
</body> |
</html> |
</html> |
|
|