Net-GPSD
view release on metacpan or search on metacpan
doc/display_device.cgi view on Meta::CPAN
$sth->execute($device, $limit) or die($DBI::errstr);
my $data=$sth->fetchall_arrayref({});#[{},{},...]
my $trackcount=scalar(@$data);
$sth=$dbh->prepare("SELECT AVG(lat) as latavg, AVG(lon) as lonavg, MAX(lat) as latmax, MAX(lon) as lonmax, MIN(lat) as latmin, MIN(lon) as lonmin FROM tracking WHERE device=?;");
$sth->execute($device) or die($DBI::errstr);
my $devicestats=$sth->fetchall_arrayref({});#[{},{},...]
$devicestats=$devicestats->[0]; #{}
#print "latavg: ", $devicestats->{'latavg'}, "\n";
my $latavg=$devicestats->{'latavg'};
my $lonavg=$devicestats->{'lonavg'};
my $latmin=$devicestats->{'latmin'};
my $lonmin=$devicestats->{'lonmin'};
my $latmax=$devicestats->{'latmax'};
my $lonmax=$devicestats->{'lonmax'};
$sth=$dbh->prepare("SELECT device, count(*)
FROM tracking
GROUP BY device
ORDER BY device;");
$sth->execute() or die($DBI::errstr);
my $devicelist=$sth->fetchall_arrayref(); #[[],[],...]
my %devicecount=map {$_->[0]=>$_->[1]} @$devicelist;
$sth->finish;
$dbh->disconnect();
my $layer='';
my $icon='icon0';
my @table=([qw{id device lat lon dtg speed heading}]);
foreach (@$data) {
my $id=$_->{'id'};
my $device=$_->{'device'};
my $lat=$_->{'lat'};
my $lon=$_->{'lon'};
my $dtg=$_->{'dtg'};
my $speed=$_->{'speed'};
my $heading=$_->{'heading'};
#//createInfoText($lat,$lon,$device,$dtg,$speed,$heading)
$layer.=
qq{
point = new GPoint($lon, $lat);
points.push(point);
html = "<p>ID: $id<br/>Device: $device<br/>Lat: $lat<br/>Lon: $lon<br/>DTG: $dtg</p>";
marker = createMarker(point, $icon, html);
map.addOverlay(marker);
};
push @table, [$id,$device,$lat,$lon,$dtg,$speed,$heading];
$icon='icon1';
}
my $lat=$data->[0]->{'lat'};
my $lon=$data->[0]->{'lon'};
my $dtg=$data->[0]->{'dtg'};
my $speed=$data->[0]->{'speed'};
my $heading=$data->[0]->{'heading'};
my $device=$data->[0]->{'device'};
my $form=join "",
$query->start_form(-action=>$query->script_name()),
"Device: ",
$query->popup_menu(-name=>'device',
-values=>[map {$_->[0]} @$devicelist]),
$query->submit(-value=>"Go!"),
$query->end_form();
unless (defined($data)) {
print $query->header(q{text/html}),
$query->p("Error: database returned bad data.");
} else {
print $query->header(q{text/html}),
q{<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:v="urn:schemas-microsoft-com:vml">
<head>},
qq{<script src="http://maps.google.com/maps?file=api&v=1&key=$googlekey" type="text/javascript"></script>
<style type="text/css">v\:* {behavior:url(#default#VML);}</style>
</head>
}, #end of q{}
qq{
<body>
<table>
<tr>
<td colspan="2">
$form
</td>
</tr>
<tr>
<td valign="top">
<div id="map" style="width: 480px; height: 360px"></div>
</td>
<td>
<table>
<tr>
<td colspan="2">Current Track Properties</td>
</tr>
<tr>
<td>Device</td><td><div id="track_device"></div></td>
</tr>
<tr>
<td>Lat</td><td><div id="track_lat"></div></td>
</tr>
<tr>
<td>Lon</td><td><div id="track_lon"></div></td>
</tr>
<tr>
<td>DTG</td><td><div id="track_dtg"></div></td>
</tr>
<tr>
<td>Speed</td><td><div id="track_speed"></div></td>
</tr>
<tr>
<td>Heading</td><td><div id="track_heading"></div></td>
</tr>
<tr>
<td>Lat Average</td><td><div id="track_latavg"></div></td>
</tr>
<tr>
<td>Lon Average</td><td><div id="track_lonavg"></div></td>
</tr>
<tr>
( run in 2.613 seconds using v1.01-cache-2.11-cpan-364913b4093 )