From: maxious Date: Sun, 27 Feb 2011 05:49:00 +0000 Subject: Merge branch 'master' of ssh://apples.lambdacomplex.org/git/bus X-Git-Url: https://maxious.lambdacomplex.org/git/?p=bus.git&a=commitdiff&h=bfaff533125ca5691ec33564982725011c3b3613 --- Merge branch 'master' of ssh://apples.lambdacomplex.org/git/bus --- --- /dev/null +++ b/betweenpoint.add.php @@ -1,1 +1,50 @@ +"); + $sql = "INSERT INTO stops (geohash,lat,lng) VALUES ('$geoPo', '$nodelat', '$nodelon')"; + $result = pg_query($conn, $sql); + if (!$result) { + echo("Error in SQL query: " . pg_last_error() . "
\n"); + } else { + echo "Inserted new point at $geoPo
"; + } + } + flush(); +?> --- /dev/null +++ b/betweenpoint.delete.php @@ -1,1 +1,33 @@ - +\n"); + } else { + echo "Deleted {$_REQUEST['oldgeopo']}
"; + $updatedroutes = 0; + $result_outdatedroutes = pg_query($conn, "Select * FROM between_stops where points LIKE '%" . $_REQUEST['oldgeopo'] . ";%'"); + while ($outdatedroute = pg_fetch_assoc($result_outdatedroutes)) { + $newpoints = str_replace($_REQUEST['oldgeopo'].';', '', $outdatedroute['points']); + $sql = "UPDATE between_stops set points='$newpoints' where fromlocation = '{$outdatedroute['fromlocation']}' AND tolocation = '{$outdatedroute['tolocation']}' "; + $result = pg_query($conn, $sql); + if (!$result) { + echo("Error in SQL query: " . pg_last_error() . "
\n"); + } + echo "updated ".$outdatedroute['fromlocation']."->".$outdatedroute['tolocation']."
"; + + $updatedroutes++; + } + echo "updated $updatedroutes routes
"; + } + } + flush(); +?> --- /dev/null +++ b/betweenpoint.move.php @@ -1,1 +1,95 @@ - +"); + $sql = "UPDATE stops SET geohash='$geoPo', lat='$nodelat', lng='$nodelon', name=null, suburb=null WHERE geohash = '{$_REQUEST['oldgeopo']}'"; + $result = pg_query($conn, $sql); + if (!$result) { + echo("Error in SQL query: " . pg_last_error() . "
\n"); + } else if (pg_affected_rows($result) == 0) { + echo ("Error 0 points moved, please refresh page and try again"); + } else { + echo $_REQUEST['oldgeopo'] . " replaced with $geoPo
"; + $updatedroutes = 0; + $result_outdatedroutes = pg_query($conn, "Select * FROM between_stops where points LIKE '%" . $_REQUEST['oldgeopo'] . ";%'"); + while ($outdatedroute = pg_fetch_assoc($result_outdatedroutes)) { + $newpoints = str_replace($_REQUEST['oldgeopo'], $geoPo, $outdatedroute['points']); + $sql = "UPDATE between_stops set points='$newpoints' where + fromlocation = '".pg_escape_string($outdatedroute['fromlocation']). + "' AND tolocation = '".pg_escape_string($outdatedroute['tolocation'])."' "; + $result = pg_query($conn, $sql); + if (!$result) { + echo("Error in SQL query: " . pg_last_error() . "
\n"); + } + echo "updated ".$outdatedroute['fromlocation']."->".$outdatedroute['tolocation']."
"; + $updatedroutes++; + } + echo "updated $updatedroutes routes
"; + } + } + flush(); +?> --- a/betweenpoint.php +++ b/betweenpoint.php @@ -10,11 +10,46 @@ // create the ol map object var map = new OpenLayers.Map('map'); - var osmtiles = new OpenLayers.Layer.OSM("local", "http://127.0.0.1/tiles/${z}/${x}/${y}.png") + var osmtiles = new OpenLayers.Layer.OSM("local", "/tiles/${z}/${x}/${y}.png") // 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"); - + //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(); -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("icong.png",new OpenLayers.Size(16,16)); var timepoints = new OpenLayers.Layer.GeoRSS("Timing Points", "displaytimepoints.georss.php", { icon: timeicon }); map.addLayers([osmtiles, markers,timepoints]); @@ -51,11 +88,31 @@ function submitBetween () { $.post("betweenpoint.submit.php", $("#inputform").serialize(), function(html){ $("#response").html(html); - //clearForms(); - return false; - }); -}; - + clearForms(); + 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) { var myindex = dropdown.selectedIndex @@ -146,10 +203,11 @@ } - + $processed = 0; foreach ($paths as $path => $routes) { if (!in_array($path, array_keys($completedPaths))) { - echo "\n"; + echo "\n"; + $processed++; } else { $completedRoutes = explode(";", $completedPaths[$path]); $incompleteRoutes = ""; @@ -161,13 +219,14 @@ } if ($incompleteRoutes != "") { - echo "\n"; + echo "\n"; + $processed++; } } } + echo "$processed"; ?> - from to
@@ -178,6 +237,13 @@
+
+oldgeopo +newlatlng + + + +
--- a/betweenpoint.submit.php +++ b/betweenpoint.submit.php @@ -5,9 +5,9 @@ exit; } print_r($_REQUEST); -$reverse=$_REQUEST["reverse"]; -$from=$_REQUEST["from"]; -$to=$_REQUEST["to"]; +$reverse=(isset($_REQUEST["reverse"]) ? $_REQUEST["reverse"] : "off"); +$from=pg_escape_string($_REQUEST["from"]); +$to=pg_escape_string($_REQUEST["to"]); $routes=$_REQUEST["routes"] ; $points=$_REQUEST["between_points"]; $sql = "INSERT INTO between_stops (fromLocation, toLocation, points, routes) VALUES('$from','$to','$points','$routes')"; --- a/busui/about.php +++ /dev/null @@ -1,9 +1,1 @@ - -

-Some icons by Joseph Wain / glyphish.com - --- a/busui/common.inc.php +++ /dev/null @@ -1,322 +1,1 @@ -"; -} -function isFastDevice() { - return true; -} - -function include_header($pageTitle, $opendiv = true, $geolocate = false) { - // if (isDebug()) // set php error level high - echo ' - - - - bus.lambdacomplex.org - '.$pageTitle.' - - - - - - - - '; - if ($geolocate) { -echo " "; - } -echo ' - - '; -if ($opendiv) echo '

- -
-

'.$pageTitle.'

-
-
'; -} - -function include_footer() -{ - echo '
'; -} - -$service_periods = Array ('sunday','saturday','weekday'); - -function service_period() -{ -switch (date('w')){ - -case 0: - return 'sunday'; -case 6: - return 'saturday'; -default: - return 'weekday'; -} -} - -function remove_spaces($string) -{ - return str_replace(' ','',$string); -} - -function midnight_seconds() -{ -// from http://www.perturb.org/display/Perlfunc__Seconds_Since_Midnight.html - $secs = (date("G") * 3600) + (date("i") * 60) + date("s"); - return $secs; -} - -function midnight_seconds_to_time($seconds) -{ - $midnight = mktime (0, 0, 0, date("n"), date("j"), date("Y")); - return date("h:ia",$midnight+$seconds); -} -function getPage($url) -{ - $ch = curl_init($url); -curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); -curl_setopt( $ch, CURLOPT_HEADER, 0 ); -$page = curl_exec($ch); -curl_close($ch); -return $page; -} -function array_flatten($a,$f=array()){ - if(!$a||!is_array($a))return ''; - foreach($a as $k=>$v){ - if(is_array($v))$f=array_flatten($v,$f); - else $f[$k]=$v; - } - return $f; -} - -function staticmap($mapPoints, $zoom = 0, $markerImage = "iconb") -{ -$width = 300; -$height = 300; -$metersperpixel[9]=305.492*$width; -$metersperpixel[10]=152.746*$width; -$metersperpixel[11]=76.373*$width; -$metersperpixel[12]=38.187*$width; -$metersperpixel[13]=19.093*$width; -$metersperpixel[14]=9.547*$width; -$metersperpixel[15]=4.773*$width; -$metersperpixel[16]=2.387*$width; -// $metersperpixel[17]=1.193*$width; -$center = ""; -$markers = ""; -$minlat = 999; -$minlon = 999; -$maxlat = 0; -$maxlon = 0; - - if (sizeof($mapPoints) < 1) return "map error"; - if (sizeof($mapPoints) === 1) { - if ($zoom == 0) $zoom = 14; - $markers .= "{$mapPoints[0][0]},{$mapPoints[0][1]},$markerimage"; - $center = "{$mapPoints[0][0]},{$mapPoints[0][1]}"; - } else { - foreach ($mapPoints as $index => $mapPoint) { - $markers .= $mapPoint[0].",".$mapPoint[1].",".$markerImage.($index+1); - if ($index+1 != sizeof($mapPoints)) $markers .= "|"; - if ($mapPoint[0] < $minlat) $minlat = $mapPoint[0]; - if ($mapPoint[0] > $maxlat) $maxlat = $mapPoint[0]; - if ($mapPoint[1] < $minlon) $minlon = $mapPoint[1]; - if ($mapPoint[1] > $maxlon) $maxlon = $mapPoint[1]; - $totalLat += $mapPoint[0]; - $totalLon += $mapPoint[1]; - } - if ($zoom == 0) { - $mapwidthinmeters = distance($minlat,$minlon,$minlat,$maxlon); - foreach (array_reverse($metersperpixel,true) as $zoomLevel => $maxdistance) - { - if ($zoom == 0 && $mapwidthinmeters < ($maxdistance + 50)) $zoom = $zoomLevel; - } - } - $center = $totalLat/sizeof($mapPoints).",".$totalLon/sizeof($mapPoints); - } - - return ''; -} - -function distance($lat1, $lng1, $lat2, $lng2) -{ - $pi80 = M_PI / 180; - $lat1 *= $pi80; - $lng1 *= $pi80; - $lat2 *= $pi80; - $lng2 *= $pi80; - - $r = 6372.797; // mean radius of Earth in km - $dlat = $lat2 - $lat1; - $dlng = $lng2 - $lng1; - $a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2); - $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); - $km = $r * $c; - - return $km * 1000; -} - -function decodePolylineToArray($encoded) -{ -// source: http://latlongeeks.com/forum/viewtopic.php?f=4&t=5 - $length = strlen($encoded); - $index = 0; - $points = array(); - $lat = 0; - $lng = 0; - - while ($index < $length) - { - // Temporary variable to hold each ASCII byte. - $b = 0; - - // The encoded polyline consists of a latitude value followed by a - // longitude value. They should always come in pairs. Read the - // latitude value first. - $shift = 0; - $result = 0; - do - { - // The `ord(substr($encoded, $index++))` statement returns the ASCII - // code for the character at $index. Subtract 63 to get the original - // value. (63 was added to ensure proper ASCII characters are displayed - // in the encoded polyline string, which is `human` readable) - $b = ord(substr($encoded, $index++)) - 63; - - // AND the bits of the byte with 0x1f to get the original 5-bit `chunk. - // Then left shift the bits by the required amount, which increases - // by 5 bits each time. - // OR the value into $results, which sums up the individual 5-bit chunks - // into the original value. Since the 5-bit chunks were reversed in - // order during encoding, reading them in this way ensures proper - // summation. - $result |= ($b & 0x1f) << $shift; - $shift += 5; - } - // Continue while the read byte is >= 0x20 since the last `chunk` - // was not OR'd with 0x20 during the conversion process. (Signals the end) - while ($b >= 0x20); - - // Check if negative, and convert. (All negative values have the last bit - // set) - $dlat = (($result & 1) ? ~($result >> 1) : ($result >> 1)); - - // Compute actual latitude since value is offset from previous value. - $lat += $dlat; - - // The next values will correspond to the longitude for this point. - $shift = 0; - $result = 0; - do - { - $b = ord(substr($encoded, $index++)) - 63; - $result |= ($b & 0x1f) << $shift; - $shift += 5; - } - while ($b >= 0x20); - - $dlng = (($result & 1) ? ~($result >> 1) : ($result >> 1)); - $lng += $dlng; - - // The actual latitude and longitude values were multiplied by - // 1e5 before encoding so that they could be converted to a 32-bit - // integer representation. (With a decimal accuracy of 5 places) - // Convert back to original values. - $points[] = array($lat * 1e-5, $lng * 1e-5); - } - - return $points; -} - -function object2array($object) { - if (is_object($object)) { - foreach ($object as $key => $value) { - $array[$key] = $value; - } - } - else { - $array = $object; - } - return $array; -} - -function geocode($query, $giveOptions) { - $url = "http://geocoding.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/geocoding/v2/find.js?query=".$query."&bbox=-35.5,149.00,-35.15,149.1930&return_location=true&bbox_only=true"; - $contents = json_decode(getPage($url)); - if ($giveOptions) return $contents->features; - elseif (isset($contents->features[0]->centroid)) return $contents->features[0]->centroid->coordinates[0].",".$contents->features[0]->centroid->coordinates[1]; - else return ""; -} - -function reverseGeocode($lat,$lng) { - $url = "http://geocoding.cloudmade.com/daa03470bb8740298d4b10e3f03d63e6/geocoding/v2/find.js?around=".$lat.",".$lng."&distance=closest&object_type=road"; - $contents = json_decode(getPage($url)); - return $contents->features[0]->properties->name; -} - -function startsWith($haystack,$needle,$case=true) { - if($case){return (strcmp(substr($haystack, 0, strlen($needle)),$needle)===0);} - return (strcasecmp(substr($haystack, 0, strlen($needle)),$needle)===0); -} - -function endsWith($haystack,$needle,$case=true) { - if($case){return (strcmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0);} - return (strcasecmp(substr($haystack, strlen($haystack) - strlen($needle)),$needle)===0); -} -?> - - --- a/busui/index.php +++ /dev/null @@ -1,55 +1,1 @@ - -
-
-

logo
- bus.lambdacomplex.org

-
-
- Launch Trip Planner... - - -
-

Time/Place Settings

-
- - -
-
- - "/> -
-
- - - -
- - -
- -
-
- - --- a/busui/readme.txt +++ /dev/null @@ -1,30 +1,1 @@ -# input location (via GPS or favourites or search) and destination (via searchable list, optional) -# http://10.0.1.153:8765/json/boundboxstops?n=-35.27568499917103&e=149.1346514225006&s=-35.279495003493516 -&w=149.12622928619385&limit=50 -# http://10.0.1.153:8765/json/stoptrips?stop=43&time=64440 # recursively call to show all services nearby, sort by distance, need to filter by service period -# Hey, can pick destination again from a list filtered to places these stops go if you're curious! -# http://10.0.1.153:8765/json/tripstoptimes?trip=2139 # Can recursively call and parse based on intended destination to show ETA -# http://10.0.1.153:8765/json/triprows?trip=2139 # For pretty maps -have to do -/usr/sbin/setsebool -P httpd_can_network_connect=1 -on fedora - -might need http://forum.jquery.com/topic/google-maps-inside-jquery-mobile - -some extras -/json/routes = all routes -/json/neareststops?lat/lng/number -TODO -Destinations -Favourites -OOP stops/routes -Stop sorting/search-filter - -static maps -https://code.google.com/apis/maps/documentation/staticmaps/ -http://www.multimap.com/openapidocs/1.2/web_service/staticmaps.htm -http://dev.openstreetmap.de/staticmap/ (os @ http://sourceforge.net/projects/staticmaplite/) -(php and open source @ http://trac.openstreetmap.org/browser/sites/other/StaticMap?rev=16348) -http://pafciu17.dev.openstreetmap.org/ - --- a/busui/routeList.php +++ /dev/null @@ -1,90 +1,1 @@ - - -
- '; -echo '