Change map icon based on aircraft category.
This only has different icons for the "rotorcraft" and "light" categories at the moment - all others are the default plane icon at different scales.
This commit is contained in:
parent
7bd2bcc0a2
commit
7fbdde156a
1
debian/dump1090-mutability.conffiles
vendored
1
debian/dump1090-mutability.conffiles
vendored
|
@ -3,3 +3,4 @@
|
|||
/usr/share/dump1090-mutability/html/script.js
|
||||
/usr/share/dump1090-mutability/html/planeObject.js
|
||||
/usr/share/dump1090-mutability/html/style.css
|
||||
/usr/share/dump1090-mutability/html/markers.js
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
|
||||
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry"></script>
|
||||
<script type="text/javascript" src="config.js"></script>
|
||||
<script type="text/javascript" src="markers.js"></script>
|
||||
<script type="text/javascript" src="planeObject.js"></script>
|
||||
<script type="text/javascript" src="formatter.js"></script>
|
||||
<script type="text/javascript" src="script.js"></script>
|
||||
|
|
86
public_html/markers.js
Normal file
86
public_html/markers.js
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,37 +1,5 @@
|
|||
"use strict";
|
||||
|
||||
var PlaneSvg = "M 0,0 " +
|
||||
"M 1.9565564,41.694305 C 1.7174505,40.497708 1.6419973,38.448747 " +
|
||||
"1.8096508,37.70494 1.8936398,37.332056 2.0796653,36.88191 2.222907,36.70461 " +
|
||||
"2.4497603,36.423844 4.087816,35.47248 14.917931,29.331528 l 12.434577," +
|
||||
"-7.050718 -0.04295,-7.613412 c -0.03657,-6.4844888 -0.01164,-7.7625804 " +
|
||||
"0.168134,-8.6194061 0.276129,-1.3160905 0.762276,-2.5869575 1.347875," +
|
||||
"-3.5235502 l 0.472298,-0.7553719 1.083746,-0.6085497 c 1.194146,-0.67053522 " +
|
||||
"1.399524,-0.71738842 2.146113,-0.48960552 1.077005,0.3285939 2.06344," +
|
||||
"1.41299352 2.797602,3.07543322 0.462378,1.0469993 0.978731,2.7738408 " +
|
||||
"1.047635,3.5036272 0.02421,0.2570284 0.06357,3.78334 0.08732,7.836246 0.02375," +
|
||||
"4.052905 0.0658,7.409251 0.09345,7.458546 0.02764,0.04929 5.600384,3.561772 " +
|
||||
"12.38386,7.805502 l 12.333598,7.715871 0.537584,0.959688 c 0.626485,1.118378 " +
|
||||
"0.651686,1.311286 0.459287,3.516442 -0.175469,2.011604 -0.608966,2.863924 " +
|
||||
"-1.590344,3.127136 -0.748529,0.200763 -1.293144,0.03637 -10.184829,-3.07436 " +
|
||||
"C 48.007733,41.72562 44.793806,40.60197 43.35084,40.098045 l -2.623567," +
|
||||
"-0.916227 -1.981212,-0.06614 c -1.089663,-0.03638 -1.985079,-0.05089 -1.989804," +
|
||||
"-0.03225 -0.0052,0.01863 -0.02396,2.421278 -0.04267,5.339183 -0.0395,6.147742 " +
|
||||
"-0.143635,7.215456 -0.862956,8.845475 l -0.300457,0.680872 2.91906,1.361455 " +
|
||||
"c 2.929379,1.366269 3.714195,1.835385 4.04589,2.41841 0.368292,0.647353 " +
|
||||
"0.594634,2.901439 0.395779,3.941627 -0.0705,0.368571 -0.106308,0.404853 " +
|
||||
"-0.765159,0.773916 L 41.4545,62.83158 39.259237,62.80426 c -6.030106,-0.07507 " +
|
||||
"-16.19508,-0.495041 -16.870991,-0.697033 -0.359409,-0.107405 -0.523792," +
|
||||
"-0.227482 -0.741884,-0.541926 -0.250591,-0.361297 -0.28386,-0.522402 -0.315075," +
|
||||
"-1.52589 -0.06327,-2.03378 0.23288,-3.033615 1.077963,-3.639283 0.307525," +
|
||||
"-0.2204 4.818478,-2.133627 6.017853,-2.552345 0.247872,-0.08654 0.247455," +
|
||||
"-0.102501 -0.01855,-0.711959 -0.330395,-0.756986 -0.708622,-2.221756 -0.832676," +
|
||||
"-3.224748 -0.05031,-0.406952 -0.133825,-3.078805 -0.185533,-5.937448 -0.0517," +
|
||||
"-2.858644 -0.145909,-5.208974 -0.209316,-5.222958 -0.06341,-0.01399 -0.974464," +
|
||||
"-0.0493 -2.024551,-0.07845 L 23.247235,38.61921 18.831373,39.8906 C 4.9432155," +
|
||||
"43.88916 4.2929558,44.057819 3.4954426,43.86823 2.7487826,43.690732 2.2007966," +
|
||||
"42.916622 1.9565564,41.694305 z";
|
||||
|
||||
function PlaneObject(icao) {
|
||||
// Info about the plane
|
||||
this.icao = icao;
|
||||
|
@ -65,13 +33,8 @@ function PlaneObject(icao) {
|
|||
// Display info
|
||||
this.visible = true;
|
||||
this.marker = null;
|
||||
this.icon = { strokeWeight: 1,
|
||||
path: PlaneSvg,
|
||||
scale: 0.4,
|
||||
fillColor: "hsl(0,0,50)",
|
||||
fillOpacity: 0.9,
|
||||
anchor: new google.maps.Point(32, 32), // Set anchor to middle of plane.
|
||||
rotation: 0 };
|
||||
this.icon = { type: 'generic',
|
||||
fillOpacity: 0.9 };
|
||||
}
|
||||
|
||||
// Appends data to the running track so we can get a visual tail on the plane
|
||||
|
@ -185,6 +148,22 @@ PlaneObject.prototype.clearLines = function() {
|
|||
}
|
||||
};
|
||||
|
||||
PlaneObject.prototype.getMarkerIconType = function() {
|
||||
var lookup = {
|
||||
'A1' : 'light',
|
||||
'A2' : 'medium',
|
||||
'A3' : 'medium',
|
||||
'A5' : 'heavy',
|
||||
'A7' : 'rotorcraft'
|
||||
|
||||
};
|
||||
|
||||
if (this.category === null || !(this.category in lookup))
|
||||
return 'generic'
|
||||
else
|
||||
return lookup[this.category];
|
||||
}
|
||||
|
||||
PlaneObject.prototype.getMarkerColor = function() {
|
||||
// Emergency squawks override everything else
|
||||
if (this.squawk in SpecialSquawks)
|
||||
|
@ -251,15 +230,20 @@ PlaneObject.prototype.getMarkerColor = function() {
|
|||
|
||||
PlaneObject.prototype.updateIcon = function() {
|
||||
var col = this.getMarkerColor();
|
||||
var type = this.getMarkerIconType();
|
||||
var weight = this.selected ? 2 : 1;
|
||||
var rotation = (this.track === null ? 0 : this.track);
|
||||
|
||||
if (col === this.icon.fillColor && weight === this.icon.strokeWeight && rotation === this.icon.rotation)
|
||||
if (col === this.icon.fillColor && weight === this.icon.strokeWeight && rotation === this.icon.rotation && type == this.icon.type)
|
||||
return false; // no changes
|
||||
|
||||
this.icon.fillColor = col;
|
||||
this.icon.strokeWeight = weight;
|
||||
this.icon.rotation = rotation;
|
||||
this.icon.type = type;
|
||||
this.icon.path = MarkerIcons[type].path;
|
||||
this.icon.anchor = MarkerIcons[type].anchor;
|
||||
this.icon.scale = MarkerIcons[type].scale;
|
||||
if (this.marker)
|
||||
this.marker.setIcon(this.icon);
|
||||
|
||||
|
@ -293,6 +277,8 @@ PlaneObject.prototype.updateData = function(receiver_timestamp, data) {
|
|||
this.flight = data.flight;
|
||||
if (typeof data.squawk !== "undefined")
|
||||
this.squawk = data.squawk;
|
||||
if (typeof data.category !== "undefined")
|
||||
this.category = data.category;
|
||||
};
|
||||
|
||||
PlaneObject.prototype.updateTick = function(receiver_timestamp, last_timestamp) {
|
||||
|
|
Loading…
Reference in a new issue