Cor Posted February 10, 2012 Report Share Posted February 10, 2012 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 Quote Link to comment Share on other sites More sharing options...
Cor Posted February 15, 2012 Author Report Share Posted February 15, 2012 Nobody Regards, Cor Quote Link to comment Share on other sites More sharing options...
Kairon Posted February 15, 2012 Report Share Posted February 15, 2012 Nobody Regards, Cor which your code? Quote Link to comment Share on other sites More sharing options...
Cor Posted February 15, 2012 Author Report Share Posted February 15, 2012 <?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> Quote Link to comment Share on other sites More sharing options...
Cor Posted February 16, 2012 Author Report Share Posted February 16, 2012 I did some test and the fault is that dep and arr are the same. Now it is the trick the see where I can change things so it shows. Regards, Cor Quote Link to comment Share on other sites More sharing options...
Kairon Posted February 16, 2012 Report Share Posted February 16, 2012 I know what it is, is that if the DEP and ARR ICAO is equal, the distance is equal to 0. So php can not divide a 0 value in "Flight Completed". I need you to put your code "percomplete" so I can solve your problem. Quote Link to comment Share on other sites More sharing options...
Cor Posted February 16, 2012 Author Report Share Posted February 16, 2012 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 Quote Link to comment Share on other sites More sharing options...
Kairon Posted February 16, 2012 Report Share Posted February 16, 2012 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; Quote Link to comment Share on other sites More sharing options...
Cor Posted February 17, 2012 Author Report Share Posted February 17, 2012 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 Quote Link to comment Share on other sites More sharing options...
Kairon Posted February 17, 2012 Report Share Posted February 17, 2012 Yes my code was: If the distance is smaller than 0 or negative, for example: -1, -5. Percent = 100 Quote Link to comment Share on other sites More sharing options...
Guest lorathon Posted February 17, 2012 Report Share Posted February 17, 2012 I would change this if ($totaldistance == '0') to this if ($totaldistance < 1) That will catch any negative just in case Quote Link to comment Share on other sites More sharing options...
Kairon Posted February 17, 2012 Report Share Posted February 17, 2012 I would change this if ($totaldistance == '0') to this if ($totaldistance < 1) That will catch any negative just in case Yeah! Quote Link to comment Share on other sites More sharing options...
Cor Posted February 17, 2012 Author Report Share Posted February 17, 2012 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.