Merge branch 'range_rings' into dev
This commit is contained in:
commit
2efbf20177
|
|
@ -97,6 +97,9 @@ OutlineMlatColor = '#4040FF';
|
||||||
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
|
SiteCircles = true; // true to show circles (only shown if the center marker is shown)
|
||||||
// In miles, nautical miles, or km (depending settings value 'DisplayUnits')
|
// In miles, nautical miles, or km (depending settings value 'DisplayUnits')
|
||||||
SiteCirclesDistances = new Array(100,150,200);
|
SiteCirclesDistances = new Array(100,150,200);
|
||||||
|
DefaultSiteCirclesCount = 3;
|
||||||
|
DefaultSiteCirclesBaseDistance = 100;
|
||||||
|
DefaultSiteCirclesInterval = 50;
|
||||||
|
|
||||||
// Controls page title, righthand pane when nothing is selected
|
// Controls page title, righthand pane when nothing is selected
|
||||||
PageName = "PiAware SkyAware";
|
PageName = "PiAware SkyAware";
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,26 @@
|
||||||
<div class="settingsText">Group by Data Type</div>
|
<div class="settingsText">Group by Data Type</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="range_ring_column" class="settingsOptionContainer">
|
||||||
|
<div class="infoBlockTitleText">Range Rings</div>
|
||||||
|
<form id="range_ring_form">
|
||||||
|
<div class="rangeOptions">
|
||||||
|
<label><span>Ring Count: </span></label>
|
||||||
|
<input id="range_ring_count" name="ringCount" type="text" class="rangeRingsInput" maxlength="1">
|
||||||
|
</div>
|
||||||
|
<div class="rangeOptions">
|
||||||
|
<label><span >Base Distance: </span></label>
|
||||||
|
<input id="range_ring_base" name="baseRing" type="text" class="rangeRingsInput" maxlength="3">
|
||||||
|
</div>
|
||||||
|
<div class="rangeOptions">
|
||||||
|
<label><span>Distance Interval:</span></label>
|
||||||
|
<input id="range_ring_interval" name="ringInterval" type="text" class="rangeRingsInput" maxlength="3">
|
||||||
|
</div>
|
||||||
|
<div class="set_range_rings_button">
|
||||||
|
<button id="range_rings_button" type="button">Set Range Rings</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="map_container">
|
<div id="map_container">
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ var SpecialSquawks = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get current map settings
|
// Get current map settings
|
||||||
var CenterLat, CenterLon, ZoomLvl, MapType;
|
var CenterLat, CenterLon, ZoomLvl, MapType, SiteCirclesCount, SiteCirclesBaseDistance, SiteCirclesInterval;
|
||||||
|
|
||||||
var Dump1090Version = "unknown version";
|
var Dump1090Version = "unknown version";
|
||||||
var RefreshInterval = 1000;
|
var RefreshInterval = 1000;
|
||||||
|
|
@ -263,6 +263,7 @@ function initialize() {
|
||||||
|
|
||||||
// Set initial element visibility
|
// Set initial element visibility
|
||||||
$("#show_map_button").hide();
|
$("#show_map_button").hide();
|
||||||
|
$("#range_ring_column").hide();
|
||||||
setColumnVisibility();
|
setColumnVisibility();
|
||||||
|
|
||||||
// Initialize other controls
|
// Initialize other controls
|
||||||
|
|
@ -721,6 +722,31 @@ function initialize_map() {
|
||||||
feature.setStyle(markerStyle);
|
feature.setStyle(markerStyle);
|
||||||
StaticFeatures.push(feature);
|
StaticFeatures.push(feature);
|
||||||
|
|
||||||
|
$('#range_ring_column').show();
|
||||||
|
|
||||||
|
setRangeRings();
|
||||||
|
|
||||||
|
$('#range_rings_button').click(onSetRangeRings);
|
||||||
|
$("#range_ring_form").validate({
|
||||||
|
errorPlacement: function(error, element) {
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
ringCount: {
|
||||||
|
number: true,
|
||||||
|
min: 0
|
||||||
|
},
|
||||||
|
baseRing: {
|
||||||
|
number: true,
|
||||||
|
min: 0
|
||||||
|
},
|
||||||
|
ringInterval: {
|
||||||
|
number: true,
|
||||||
|
min: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (SiteCircles) {
|
if (SiteCircles) {
|
||||||
createSiteCircleFeatures();
|
createSiteCircleFeatures();
|
||||||
}
|
}
|
||||||
|
|
@ -807,8 +833,8 @@ function createSiteCircleFeatures() {
|
||||||
conversionFactor = 1609.0;
|
conversionFactor = 1609.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i=0; i < SiteCirclesDistances.length; ++i) {
|
for (var i=0; i < SiteCirclesCount; ++i) {
|
||||||
var distance = SiteCirclesDistances[i] * conversionFactor;
|
var distance = (SiteCirclesBaseDistance + (SiteCirclesInterval * i)) * conversionFactor;
|
||||||
var circle = make_geodesic_circle(SitePosition, distance, 360);
|
var circle = make_geodesic_circle(SitePosition, distance, 360);
|
||||||
circle.transform('EPSG:4326', 'EPSG:3857');
|
circle.transform('EPSG:4326', 'EPSG:3857');
|
||||||
var feature = new ol.Feature(circle);
|
var feature = new ol.Feature(circle);
|
||||||
|
|
@ -1531,6 +1557,13 @@ function resetMap() {
|
||||||
localStorage['CenterLon'] = CenterLon = DefaultCenterLon;
|
localStorage['CenterLon'] = CenterLon = DefaultCenterLon;
|
||||||
localStorage['ZoomLvl'] = ZoomLvl = DefaultZoomLvl;
|
localStorage['ZoomLvl'] = ZoomLvl = DefaultZoomLvl;
|
||||||
|
|
||||||
|
// Reset to default range rings
|
||||||
|
localStorage['SiteCirclesCount'] = SiteCirclesCount = DefaultSiteCirclesCount;
|
||||||
|
localStorage['SiteCirclesBaseDistance'] = SiteCirclesBaseDistance = DefaultSiteCirclesBaseDistance;
|
||||||
|
localStorage['SiteCirclesInterval'] = SiteCirclesInterval = DefaultSiteCirclesInterval;
|
||||||
|
setRangeRings();
|
||||||
|
createSiteCircleFeatures();
|
||||||
|
|
||||||
// Set and refresh
|
// Set and refresh
|
||||||
OLMap.getView().setZoom(ZoomLvl);
|
OLMap.getView().setZoom(ZoomLvl);
|
||||||
OLMap.getView().setCenter(ol.proj.fromLonLat([CenterLon, CenterLat]));
|
OLMap.getView().setCenter(ol.proj.fromLonLat([CenterLon, CenterLat]));
|
||||||
|
|
@ -1933,3 +1966,27 @@ function updatePiAwareOrFlightFeeder() {
|
||||||
}
|
}
|
||||||
refreshPageTitle();
|
refreshPageTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set range ring globals and populate form values
|
||||||
|
function setRangeRings() {
|
||||||
|
SiteCirclesCount = Number(localStorage['SiteCirclesCount']) || DefaultSiteCirclesCount;
|
||||||
|
SiteCirclesBaseDistance = Number(localStorage['SiteCirclesBaseDistance']) || DefaultSiteCirclesBaseDistance;
|
||||||
|
SiteCirclesInterval = Number(localStorage['SiteCirclesInterval']) || DefaultSiteCirclesInterval;
|
||||||
|
|
||||||
|
// Populate text fields with current values
|
||||||
|
$('#range_ring_count').val(SiteCirclesCount);
|
||||||
|
$('#range_ring_base').val(SiteCirclesBaseDistance);
|
||||||
|
$('#range_ring_interval').val(SiteCirclesInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
// redraw range rings with form values
|
||||||
|
function onSetRangeRings() {
|
||||||
|
// Save state to localStorage
|
||||||
|
localStorage.setItem('SiteCirclesCount', parseFloat($("#range_ring_count").val().trim()));
|
||||||
|
localStorage.setItem('SiteCirclesBaseDistance', parseFloat($("#range_ring_base").val().trim()));
|
||||||
|
localStorage.setItem('SiteCirclesInterval', parseFloat($("#range_ring_interval").val().trim()));
|
||||||
|
|
||||||
|
setRangeRings();
|
||||||
|
|
||||||
|
createSiteCircleFeatures();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -260,6 +260,21 @@ div#loader { z-index: 99; position: absolute; left: 0; top: 0; bottom: 0; right:
|
||||||
width: 50px;
|
width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.rangeRingsInput {
|
||||||
|
width: 30px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rangeOptions {
|
||||||
|
width: 170px;
|
||||||
|
padding-top: 8px;
|
||||||
|
text-indent: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.set_range_rings_button {
|
||||||
|
padding-top: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
select.error, textarea.error, input.error {
|
select.error, textarea.error, input.error {
|
||||||
color: #FF0000;
|
color: #FF0000;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue