/////////////////////////////////////////////////////////////////////////// // Copyright © 2014 - 2017 Esri. All Rights Reserved. // // 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. /////////////////////////////////////////////////////////////////////////// /** * usng/utils.js is for USNG and MGRS functions that were not part of the original usng.js * open source library that is in usng/usng.js. In other words, USNG and MGRS functions written * specifically for this application belong in usng/utils.js, not usng/usng.js. */ define(["libs/usng/usng"], function(usng) { var theClass = { /** * Looks up an MGRS or USNG string and returns a result object with text, * latitude, and longitude properties, or null if the string is not a valid * MGRS or USNG string. */ lookupMgrs: function(mgrs) { var result = null; try { var latLon = []; usng.USNGtoLL(mgrs, latLon); if (2 <= latLon.length && !isNaN(latLon[0]) && !isNaN(latLon[1])) { result = { text: mgrs.toUpperCase(), latitude: latLon[0], longitude: latLon[1] }; } else { result = null; } } catch (err) { //Not an MGRS/USNG string; that's fine; swallow result = null; } return result; } }; return theClass; });