mirror of
https://github.com/NASAWorldWind/WebWorldWind.git
synced 2025-12-08 19:46:18 +00:00
93 lines
3.3 KiB
JavaScript
93 lines
3.3 KiB
JavaScript
/*
|
||
* 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 GoToBox
|
||
*/
|
||
define(function () {
|
||
"use strict";
|
||
|
||
/**
|
||
* Constructs a GoToBox.
|
||
* @alias GoToBox
|
||
* @constructor
|
||
* @classdesc Provides a search box enabling the user to find and move to specified locations.
|
||
* @param {WorldWindow} worldWindow The WorldWindow to associate this GoToBox with.
|
||
*/
|
||
var GoToBox = function (worldWindow) {
|
||
var thisGoToBox = this;
|
||
|
||
this.wwd = worldWindow;
|
||
$("#searchBox").find("button").on("click", function (e) {
|
||
thisGoToBox.onSearchButton(e);
|
||
});
|
||
|
||
this.geocoder = new WorldWind.NominatimGeocoder();
|
||
$("#searchText").on("keypress", function (e) {
|
||
thisGoToBox.onSearchTextKeyPress($(this), e);
|
||
});
|
||
};
|
||
|
||
GoToBox.prototype.onSearchButton = function (event) {
|
||
this.performSearch($("#searchText")[0].value)
|
||
};
|
||
|
||
GoToBox.prototype.onSearchTextKeyPress = function (searchInput, event) {
|
||
if (event.keyCode === 13) {
|
||
searchInput.blur();
|
||
this.performSearch($("#searchText")[0].value)
|
||
}
|
||
};
|
||
|
||
GoToBox.prototype.performSearch = function (queryString) {
|
||
if (queryString) {
|
||
var thisGoToBox = this,
|
||
latitude, longitude;
|
||
|
||
if (queryString.match(WorldWind.WWUtil.latLonRegex)) {
|
||
var tokens = queryString.split(",");
|
||
latitude = parseFloat(tokens[0]);
|
||
longitude = parseFloat(tokens[1]);
|
||
thisGoToBox.goToAnimator.goTo(new WorldWind.Location(latitude, longitude));
|
||
} else {
|
||
this.geocoder.lookup(queryString, function (geocoder, result) {
|
||
if (result.length > 0) {
|
||
latitude = parseFloat(result[0].lat);
|
||
longitude = parseFloat(result[0].lon);
|
||
|
||
WorldWind.Logger.log(
|
||
WorldWind.Logger.LEVEL_INFO, queryString + ": " + latitude + ", " + longitude);
|
||
|
||
thisGoToBox.wwd.goTo(new WorldWind.Location(latitude, longitude));
|
||
}
|
||
});
|
||
}
|
||
}
|
||
};
|
||
|
||
return GoToBox;
|
||
}); |