|
472 | 472 |
|
473 | 473 | ***************************************************************************/ |
474 | 474 |
|
475 | | - UTMLetterDesignator: function (lat) { |
| 475 | + UTMLetterDesignator: function (lat){ |
476 | 476 | lat = parseFloat(lat); |
477 | 477 |
|
478 | | - var letterDesignator; |
479 | | - if ((84 >= lat) && (lat >= 72)) |
480 | | - letterDesignator = 'X'; |
481 | | - else if ((72 > lat) && (lat >= 64)) |
482 | | - letterDesignator = 'W'; |
483 | | - else if ((64 > lat) && (lat >= 56)) |
484 | | - letterDesignator = 'V'; |
485 | | - else if ((56 > lat) && (lat >= 48)) |
486 | | - letterDesignator = 'U'; |
487 | | - else if ((48 > lat) && (lat >= 40)) |
488 | | - letterDesignator = 'T'; |
489 | | - else if ((40 > lat) && (lat >= 32)) |
490 | | - letterDesignator = 'S'; |
491 | | - else if ((32 > lat) && (lat >= 24)) |
492 | | - letterDesignator = 'R'; |
493 | | - else if ((24 > lat) && (lat >= 16)) |
494 | | - letterDesignator = 'Q'; |
495 | | - else if ((16 > lat) && (lat >= 8)) |
496 | | - letterDesignator = 'P'; |
497 | | - else if (( 8 > lat) && (lat >= 0)) |
498 | | - letterDesignator = 'N'; |
499 | | - else if (( 0 > lat) && (lat >= -8)) |
500 | | - letterDesignator = 'M'; |
501 | | - else if ((-8> lat) && (lat >= -16)) |
502 | | - letterDesignator = 'L'; |
503 | | - else if ((-16 > lat) && (lat >= -24)) |
504 | | - letterDesignator = 'K'; |
505 | | - else if ((-24 > lat) && (lat >= -32)) |
506 | | - letterDesignator = 'J'; |
507 | | - else if ((-32 > lat) && (lat >= -40)) |
508 | | - letterDesignator = 'H'; |
509 | | - else if ((-40 > lat) && (lat >= -48)) |
510 | | - letterDesignator = 'G'; |
511 | | - else if ((-48 > lat) && (lat >= -56)) |
512 | | - letterDesignator = 'F'; |
513 | | - else if ((-56 > lat) && (lat >= -64)) |
514 | | - letterDesignator = 'E'; |
515 | | - else if ((-64 > lat) && (lat >= -72)) |
516 | | - letterDesignator = 'D'; |
517 | | - else if ((-72 > lat) && (lat >= -80)) |
518 | | - letterDesignator = 'C'; |
519 | | - else |
520 | | - letterDesignator = 'Z'; // This is here as an error flag to show |
521 | | - // that the latitude is outside the UTM limits |
522 | | - return letterDesignator; |
| 478 | + if (lat > 84 || lat < -80){ |
| 479 | + return 'Z'; |
| 480 | + |
| 481 | + } else { |
| 482 | + var index = (lat + 80) / 8; |
| 483 | + |
| 484 | + if (index >= 6) index++; // skip 'I' |
| 485 | + if (index >= 12) index++; // skip 'O' |
| 486 | + if (index >= 22) index--; // adjust for 80 to 84, which should be 'X' |
| 487 | + |
| 488 | + return String.fromCharCode(67 /* C */ + index); |
| 489 | + } |
523 | 490 | }, |
524 | 491 |
|
525 | 492 |
|
|
0 commit comments