mirror of
https://github.com/NASAWorldWind/WebWorldWind.git
synced 2026-01-18 15:12:57 +00:00
99 lines
3.6 KiB
JavaScript
99 lines
3.6 KiB
JavaScript
/*
|
|
* Copyright (C) 2014 United States Government as represented by the Administrator of the
|
|
* National Aeronautics and Space Administration. All Rights Reserved.
|
|
*/
|
|
/**
|
|
* @exports ProjectionMenu
|
|
* @version $Id: ProjectionMenu.js 3185 2015-06-12 19:12:09Z tgaskins $
|
|
*/
|
|
define(function () {
|
|
"use strict";
|
|
|
|
/**
|
|
* Constructs a projection menu for a specified {@link WorldWindow}.
|
|
* @alias ProjectionMenu
|
|
* @constructor
|
|
* @classdesc Provides a projection menu to select the projection for a World Window.
|
|
* @param {WorldWindow} worldWindow The World Window to associate this projection menu with.
|
|
*/
|
|
var ProjectionMenu = function (worldWindow) {
|
|
var thisExplorer = this;
|
|
|
|
this.wwd = worldWindow;
|
|
|
|
this.roundGlobe = this.wwd.globe;
|
|
|
|
this.createProjectionList();
|
|
$("#projectionDropdown").find(" li").on("click", function (e) {
|
|
thisExplorer.onProjectionClick(e);
|
|
});
|
|
};
|
|
|
|
ProjectionMenu.prototype.onProjectionClick = function (event) {
|
|
var projectionName = event.target.innerText || event.target.innerHTML;
|
|
$("#projectionDropdownTitle").html(projectionName + "<span class='caret'></span>");
|
|
|
|
if (projectionName === "3D") {
|
|
if (!this.roundGlobe) {
|
|
this.roundGlobe = new WorldWind.Globe(new WorldWind.EarthElevationModel());
|
|
}
|
|
|
|
if (this.wwd.globe !== this.roundGlobe) {
|
|
this.wwd.globe = this.roundGlobe;
|
|
}
|
|
} else {
|
|
if (!this.flatGlobe) {
|
|
this.flatGlobe = new WorldWind.Globe2D();
|
|
}
|
|
|
|
if (projectionName === "Equirectangular") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionEquirectangular();
|
|
} else if (projectionName === "Mercator") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionMercator();
|
|
} else if (projectionName === "North Polar") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionPolarEquidistant("North");
|
|
} else if (projectionName === "South Polar") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionPolarEquidistant("South");
|
|
} else if (projectionName === "North UPS") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionUPS("North");
|
|
} else if (projectionName === "South UPS") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionUPS("South");
|
|
} else if (projectionName === "North Gnomonic") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionGnomonic("North");
|
|
} else if (projectionName === "South Gnomonic") {
|
|
this.flatGlobe.projection = new WorldWind.ProjectionGnomonic("South");
|
|
}
|
|
|
|
if (this.wwd.globe !== this.flatGlobe) {
|
|
this.wwd.globe = this.flatGlobe;
|
|
}
|
|
}
|
|
|
|
this.wwd.redraw();
|
|
};
|
|
|
|
ProjectionMenu.prototype.createProjectionList = function () {
|
|
var projectionNames = [
|
|
"3D",
|
|
"Equirectangular",
|
|
"Mercator",
|
|
"North Polar",
|
|
"South Polar",
|
|
"North UPS",
|
|
"South UPS",
|
|
"North Gnomonic",
|
|
"South Gnomonic"
|
|
];
|
|
var projectionDropdown = $("#projectionDropdown");
|
|
|
|
var ulItem = $('<ul class="dropdown-menu"></ul>');
|
|
projectionDropdown.append(ulItem);
|
|
|
|
for (var i = 0; i < projectionNames.length; i++) {
|
|
var projectionItem = $('<li><a>' + projectionNames[i] + '</a></li>');
|
|
ulItem.append(projectionItem);
|
|
}
|
|
};
|
|
|
|
return ProjectionMenu;
|
|
}); |