Jump to content

Acarsmap trouble


Cor

Recommended Posts

Hello All,

When somebody flying a circuit the acarsmap will not show the flights.

I think it has something to do with the fact that the distance is 0 and the remaining time is 0.

But I don´t have a clue where to change that. Does more people have those problems and better does somebody

has a solution for this little problem.

Regards,

Cor

Link to comment
Share on other sites

<?php

/**

* These are some options for the ACARS map, you can change here

*

* By default, the zoom level and center are ignored, and the map

* will try to fit the all the flights in. If you want to manually set

* the zoom level and center, set "autozoom" to false.

*

* You can use these MapTypeId's:

* http://code.google.com/apis/maps/documentation/v3/reference.html#MapTypeId

*

* Change the "TERRAIN" to the "Constant" listed there - they are case-sensitive

*

* Also, how to style the acars pilot list table. You can use these style selectors:

*

* table.acarsmap { }

* table.acarsmap thead { }

* table.acarsmap tbody { }

* table.acarsmap tbody tr.even { }

* table.acarsmap tbody tr.odd { }

*/

?>

<?php error_reporting(0); ?>

<script type="text/javascript">

<?php

/* These are the settings for the Google map. You can see the

Google API reference if you want to add more options.

There's two options I've added:

autozoom: This will automatically center in on/zoom

so all your current flights are visible. If false,

then the zoom and center you specify will be used instead

refreshTime: Time, in seconds * 1000 to refresh the map.

The default is 10000 (10 seconds)

*/

?>

var acars_map_defaults = {

autozoom: true,

zoom: 4,

center: new google.maps.LatLng("<?php echo Config::Get('MAP_CENTER_LAT'); ?>", "<?php echo Config::Get('MAP_CENTER_LNG'); ?>"),

mapTypeId: google.maps.MapTypeId.TERRAIN,

refreshTime: 180000

};

</script>

<div class="mapcenter" align="center">

<div id="acarsmap" style="width:<?php echo Config::Get('MAP_WIDTH');?>; height: <?php echo Config::Get('MAP_HEIGHT')?>"></div>

</div>

<?php

/* See below for details and columns you can use in this table */

?>

<table width="100%" border="1px" bordercolor="#2C4065" bgcolor=#2C4065 class="acarsmap">

<thead>

<tr>

<td width="25%" bgcolor=#FFFFFF><b>Pilot</b></td>

<td width="10%" bgcolor=#FFFFFF><b>Flight Number</b></td>

<td width="5%" bgcolor=#FFFFFF><b>Departure</b></td>

<td width="5%" bgcolor=#FFFFFF><b>Arrival</b></td>

<td width="15%" bgcolor=#FFFFFF><b>Status</b></td>

<td width="5%" bgcolor=#FFFFFF><b>Altitude</b></td>

<td width="5%" bgcolor=#FFFFFF><b>Speed</b></td>

<td width="15%" bgcolor=#FFFFFF><b>Distance/Time Remain</b></td>

<td width="15%" bgcolor=#FFFFFF><b>Flight Completed</b></td>

</tr>

</thead>

<tbody id="pilotlist"></tbody>

</table>

<script type="text/javascript" src="<?php echo fileurl('/lib/js/acarsmap.js');?>"></script>

<?php

/* This is the template which is used in the table above, for each row.

Be careful modifying it. You can simply add/remove columns, combine

columns too. Keep each "section" (<%=...%>) intact

Variables you can use (what they are is pretty obvious)

Variable: Notes:

<%=flight.pilotid%>

<%=flight.firstname%>

<%=flight.lastname%>

<%=flight.pilotname%> First and last combined

<%=flight.flightnum%>

<%=flight.depapt%> Gives the airport name

<%=flight.depicao%>

<%=flight.arrapt%> Gives the airport name

<%=flight.arricao%>

<%=flight.phasedetail%>

<%=flight.heading%>

<%=flight.alt%>

<%=flight.gs%>

<%=flight.disremaining%>

<%=flight.timeremaning%>

<%=flight.aircraft%> Gives the registration

<%=flight.aircraftname%> Gives the full name

<%=flight.client%> FSACARS/Xacars/FSFK, etc

<%=flight.trclass%> "even" or "odd"

You can also use logic in the templating, if you so choose:

http://ejohn.org/blog/javascript-micro-templating/

*/

?>

<script type="text/html" id="acars_map_row">

<tr bgcolor=#FFFFFF class="<%=flight.trclass%>">

<td><a href="<?php echo url('/profile/view');?>/<%=flight.pilotid%>"><%=flight.pilotid%> - <%=flight.pilotname%></a></td>

<td><%=flight.flightnum%></td>

<td><%=flight.depicao%></td>

<td><%=flight.arricao%></td>

<td><%=flight.phasedetail%></td>

<td><%=flight.alt%></td>

<td><%=flight.gs%></td>

<td><%=flight.distremaining%> <?php echo Config::Get('UNITS');?> / <%=flight.timeremaining%></td>

<td><div class="progress-container">

<div style="width: <%=flight.percomplete%>%"><strong><%=flight.percomplete%>%</div>

</div>

</td>

</tr>

</script>

<?php

/* This is the template for the little map bubble which pops up when you click on a flight

Same principle as above, keep the <%=...%> tags intact. The same variables are available

to use here as are available above.

*/

?>

<script type="text/html" id="acars_map_bubble">

<span style="font-size: 10px; text-align:left; width: 100%" align="left">

<a href="<?php echo url('/profile/view');?>/<%=flight.pilotid%>"><%=flight.pilotid%> - <%=flight.pilotname%></a><br />

<strong>Flight <%=flight.flightnum%></strong> (<%=flight.depicao%> to <%=flight.arricao%>)<br />

<strong>Status: </strong><%=flight.phasedetail%><br />

<strong>Dist/Time Remain: </strong><%=flight.distremaining%> <?php echo Config::Get('UNITS');?> / <%=flight.timeremaining%><br />

</span>

</script>

<?php

/* This is a small template for information about a navpoint popup

Variables available:

<%=nav.title%>

<%=nav.name%>

<%=nav.freq%>

<%=nav.lat%>

<%=nav.lng%>

<%=nav.type%> 2=NDB 3=VOR 4=DME 5=FIX 6=TRACK

*/

?>

<script type="text/html" id="navpoint_bubble">

<span style="font-size: 10px; text-align:left; width: 100%" align="left">

<strong>Name: </strong><%=nav.title%> (<%=nav.name%>)<br />

<strong>Type: </strong>

<?php /* Show the type of point */ ?>

<% if(nav.type == 2) { %> NDB <% } %>

<% if(nav.type == 3) { %> VOR <% } %>

<% if(nav.type == 4) { %> DME <% } %>

<% if(nav.type == 5) { %> FIX <% } %>

<% if(nav.type == 6) { %> TRACK <% } %>

<br />

<?php /* Only show frequency if it's not a 0*/ ?>

<% if(nav.freq != 0) { %>

<strong>Frequency: </strong><%=nav.freq%>

<% } %>

</span>

</script>

Link to comment
Share on other sites

I think you mean this one

$flights = ACARSData::GetACARSData();

if(!$flights)

$flights = array();

$this->acarsflights = array();

foreach($flights as $flight)

{

if($flight->route == '')

{

$flight->route_details = array();

}

else

{

$flight->route_details = NavData::parseRoute($flight->route);

}

$c = (array) $flight; // Convert the object to an array

$c['pilotid'] = PilotData::GetPilotCode($c['code'], $c['pilotid']);

$totaldistance = round(SchedulesData::distanceBetweenPoints($flight->deplat, $flight->deplng, $flight->arrlat, $flight->arrlng));

$percomplete = ABS(number_format(((($totaldistance - $flight->distremain) / $totaldistance) * 100), 2));

$c['percomplete'] = $percomplete;

Regards,

Cor

Link to comment
Share on other sites

Test it ;)

$flights = ACARSData::GetACARSData();

if(!$flights) 
$flights = array();

$this->acarsflights = array();
foreach($flights as $flight)
{	
if($flight->route == '')
{
$flight->route_details = array();
}
else
{
$flight->route_details = NavData::parseRoute($flight->route);
}

$c = (array) $flight; // Convert the object to an array

$c['pilotid'] = PilotData::GetPilotCode($c['code'], $c['pilotid']);

$totaldistance = round(SchedulesData::distanceBetweenPoints($flight->deplat, $flight->deplng, $flight->arrlat, $flight->arrlng));
$percomplete = ABS(number_format(((($totaldistance - $flight->distremain) / $totaldistance) * 100), 2));

if($percomplete <= '0'){ $percomplete = '100'; } else { $percomplete = $percomplete; }

$c['percomplete'] = $percomplete;

Link to comment
Share on other sites

Hey Kairon,

You code did not do the trick put pointed me in the right direction, the code must be

$flights = ACARSData::GetACARSData();

if(!$flights)

$flights = array();

$this->acarsflights = array();

foreach($flights as $flight)

{

if($flight->route == '')

{

$flight->route_details = array();

}

else

{

$flight->route_details = NavData::parseRoute($flight->route);

}

$c = (array) $flight; // Convert the object to an array

$c['pilotid'] = PilotData::GetPilotCode($c['code'], $c['pilotid']);

$totaldistance = round(SchedulesData::distanceBetweenPoints($flight->deplat, $flight->deplng, $flight->arrlat, $flight->arrlng));

if ($totaldistance == '0')

{

$totaldistance = '100';

}

else

{

$totaldistance = $totaldistance;

}

$percomplete = ABS(number_format(((($totaldistance - $flight->distremain) / $totaldistance) * 100), 2));

$c['percomplete'] = $percomplete;

I totally overlooked that. Now it wil show on the map with the remaining distance of 1 NM and 99% fight completed.

Thanks for you help,

Regards,

Cor

Link to comment
Share on other sites

I would change this

if ($totaldistance == '0')

to this

if ($totaldistance < 1)

That will catch any negative just in case

Ok good idea. Will change it. I had to change it in to if ($totaldistance <= 1)

otherwise it will not work

Regards,

Cor

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...