liuyg
2021-07-02 25ce610f6ecca7325e7a743dc032c4a76559c63d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
///////////////////////////////////////////////////////////////////////////
// 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;
});