/* * Copyright 2003-2006, 2009, 2017, 2020 United States Government, as represented * by the Administrator of the National Aeronautics and Space Administration. * All rights reserved. * * The NASAWorldWind/WebWorldWind platform is licensed under the Apache License, * Version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License * at http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. * * NASAWorldWind/WebWorldWind also contains the following 3rd party Open Source * software: * * ES6-Promise – under MIT License * libtess.js – SGI Free Software License B * Proj4 – under MIT License * JSZip – under MIT License * * A complete listing of 3rd Party software notices and licenses included in * WebWorldWind can be found in the WebWorldWind 3rd-party notices and licenses * PDF found in code directory. */ /** * @exports ProjectionMenu */ 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 WorldWindow. * @param {WorldWindow} worldWindow The WorldWindow 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 + ""); 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 = $('
'); projectionDropdown.append(ulItem); for (var i = 0; i < projectionNames.length; i++) { var projectionItem = $('