John Allen - GEO.Coordinate-0.03
NAME
GEO.Coordinate - Geographic coordinate manipulation class
SYNOPSIS
// Import From JSAN
JSAN.use( 'GEO.Coordinate' );
coord = new GEO.Coordinate(51.5007);
coord.toDMS();
coord = new GEO.Coordinate(51, 30, 2.52);
coord.toDecDeg();
DESCRIPTION
GEO.Coordinate is a class for manipulating geographic corodinates.
CONSTRUCTOR
var coord = new GEO.Coordinate(decimaldegrees);
var coord = new GEO.Coordinate(degrees, decimalminutes);
var coord = new GEO.Coordinate(degrees, minutes, seconds);
Returns a new GEO.Coordinate
object. The following parameters can be passed to the constructor:
METHODS
toDMS(precision)
This method will return the coordinate in degrees, minutes and seconds, the seconds will be returned at the specified precision.
Example:
var coord = new GEO.Coordinate(51.5007);
coord.toDMS(2);
Returns: 51 30' 2.52"
toDecDeg(precision)
This method will return the coordinate in decimal degrees, the decimals will be returned at the specified precision.
Example:
var coord = new GEO.Coordinate(51, 30, 2.52);
coord.toDecDeg(2);
Returns: 51.50
toDecMin(precision)
This method will return the coordinate in decimal minutes, the minute decimals will be returned at the specified precision.
Example:
var coord = new GEO.Coordinate(51, 30, 2.52);
coord.toDecMin(2);
Returns: 51 30.04'
AUTHOR
John Allen <john@thoofooz.com>
COPYRIGHT
Copyright (c) 2005 John Allen. All rights reserved.
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl.
POD ERRORS
Hey! The above document had some coding errors, which are explained below:
- Around line 37:
- =over should be: '=over' or '=over positive_number'
- Around line 124:
- You forgot a '=back' before '=head1'
/* * A JavaScript geographic coordinate manipulation class. * Version 0.03 Copyright (C) John Allen <john@thoofooz.com>. * Distributed under the Perl License */ /* =head1 NAME GEO.Coordinate - Geographic coordinate manipulation class =head1 SYNOPSIS // Import From JSAN JSAN.use( 'GEO.Coordinate' ); coord = new GEO.Coordinate(51.5007); coord.toDMS(); coord = new GEO.Coordinate(51, 30, 2.52); coord.toDecDeg(); =head1 DESCRIPTION GEO.Coordinate is a class for manipulating geographic corodinates. =head1 CONSTRUCTOR var coord = new GEO.Coordinate(decimaldegrees); var coord = new GEO.Coordinate(degrees, decimalminutes); var coord = new GEO.Coordinate(degrees, minutes, seconds); Returns a new C<GEO.Coordinate> object. The following parameters can be passed to the constructor: =over 4 =item * one parameter a coordinate in decimal degrees e.g. 51.5007 =item * two parameters are decimal minutes e.g. 51 30.04 =item * three parameters are degrees, minutes and seconds e.g. 51 30 2.52 =back =cut */ if (!GEO) var GEO = {}; GEO.Coordinate = function (p1, p2, p3) { if (p1!=null && p2!=null && p3!=null) { this._deg = parseFloat(p1); this._min = parseFloat(p2); this._sec = parseFloat(p3); this._dmstodecdeg(); this._dmstodecmin(); if (p1.toString().match(/-0/g)) { // this is a negative parameter, eg. this._dec_deg_deg = this._dec_deg_deg*-1 this._decdegtodms(); this._dmstodecmin(); } } else { if (p1!=null && p2!=null) { this._decmin_deg = parseFloat(p1); this._decmin_min = parseFloat(p2); this._decmintodecdeg(); this._decdegtodms(); if (p1.toString().match(/-0/g)) { // this is a negative parameter, eg. this._dec_deg_deg = this._dec_deg_deg*-1 this._decdegtodms(); this._dmstodecmin(); } } else { this._dec_deg_deg = parseFloat(p1); this._decdegtodms(); this._dmstodecmin(); } } }; GEO.Coordinate.VERSION = '0.03'; GEO.Coordinate.prototype = { _deg: null, _min: null, _sec: null, _decmin_deg: null, _decmin_min: null, _dec_deg_deg: null, _dmstodecdeg: function () { if (this._deg >= 0) { this._dec_deg_deg = this._deg + this._min/60 + this._sec/3600; } else { this._dec_deg_deg = this._deg - this._min/60 - this._sec/3600; } }, _dmstodecmin: function () { this._decmin_deg = parseInt(this._dec_deg_deg); this._decmin_min = (Math.abs(this._dec_deg_deg - this._deg) * 3600) / 60; }, _decmintodecdeg: function () { if (this._decmin_deg >= 0) { this._dec_deg_deg = this._decmin_deg + this._decmin_min/60; } else { this._dec_deg_deg = this._decmin_deg - this._decmin_min/60; } }, _decdegtodms: function () { this._deg = parseInt(this._dec_deg_deg); this._min = parseInt((Math.abs(this._dec_deg_deg - this._deg) * 3600) / 60); this._sec = (Math.abs(this._dec_deg_deg - this._deg) * 3600) - (this._min * 60); }, /* =head1 METHODS =head2 toDMS(precision) This method will return the coordinate in degrees, minutes and seconds, the seconds will be returned at the specified precision. Example: var coord = new GEO.Coordinate(51.5007); coord.toDMS(2); Returns: B<51 30' 2.52"> =head2 toDecDeg(precision) This method will return the coordinate in decimal degrees, the decimals will be returned at the specified precision. Example: var coord = new GEO.Coordinate(51, 30, 2.52); coord.toDecDeg(2); Returns: B<51.50> =head2 toDecMin(precision) This method will return the coordinate in decimal minutes, the minute decimals will be returned at the specified precision. Example: var coord = new GEO.Coordinate(51, 30, 2.52); coord.toDecMin(2); Returns: B<51 30.04'> =cut */ toDMS: function (precision) { var p = precision || 0; var res = Math.abs(this._deg) + ' ' + this._min + '\' ' + this._sec.toFixed(p) + '"' if (this.toDecDeg(5)<0) { res = "-"+res; } return res; }, toDecDeg: function (precision) { var p = precision || 0; return this._dec_deg_deg.toFixed(p); }, toDecMin: function (precision) { var p = precision || 0; var res = Math.abs(this._decmin_deg) + ' ' + this._decmin_min.toFixed(p) + '\''; if (this.toDecDeg(5)<0) { res = "-"+res; } return res; } }; /* =head1 AUTHOR John Allen <john@thoofooz.com> =head1 COPYRIGHT Copyright (c) 2005 John Allen. All rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl. =cut */