Source code of a graphical tool for drawing and computing distances over Google maps.
Run Tool | index.html | main.css | formatters.js | geoCircle.js | geoCode.js | geo.js | index.js | mapControls.js | tableManager.js | util.js | wayPoint.js | wayPointsManager.js
// Copyright 2006-2008 (c) Paul Demers <paul@acscdg.com>
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA., or visit one
// of the links here:
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
// http://www.acscdg.com/LICENSE.txt
//////////////////////////////////////////////////////////////////
// Formatting methods for map drawing and distance tools.
// Dependency on other modules:
// Google maps (for geo point object).
// Web site with this code running: http://www.acscdg.com/
//
//// Formats a positive real number to at least 2 significant digits.
function formatFloat(number)
{
// Assumes number > 0.
var result;
if (number < 1)
{
var temp = Math.round(number * 100) / 100;
result = temp.toString();
}
else if (number < 10)
{
var temp = Math.round(number * 10) / 10;
result = temp.toString();
}
else
{
result = Math.round(number);
}
return result;
}
//
//// Zero fills numbers less than 10 to 2 digits.
function format10(number)
{
var result;
if (number >= 10)
result = "" + number;
else
result = "0" + number;
return result;
}
//
//// Zero fills numbers less than 100 to 3 digits.
function format100(number)
{
var result;
if (number >= 100)
result = "" + number;
else if (number >= 10)
result = "0" + number;
else
result = "00" + number;
return result;
}
//
//// Formats the latigude in the given point object to:
//// DD MM SS d (zero filled).
function myLatToString(point)
{
var lat = point.lat();
var latDir;
if (lat < 0)
{
latDir = "S";
lat = lat * -1.0;
}
else
{
latDir = "N";
}
var latDegInt = Math.floor(lat);
var latMinInt = Math.floor((lat * 60.0) - (latDegInt * 60.0));
var latSecInt = Math.floor((lat * 3600.0) - (latDegInt * 3600.0) - (latMinInt * 60.0));
return format10(latDegInt) + " " + format10(latMinInt) + " " + format10(latSecInt) + " " + latDir;
}
//
//// Formats the longitude in the given point object to:
//// DDD MM SS d (zero filled)
function myLngToString(point)
{
var lng = point.lng();
var lngDir;
if (lng < 0)
{
lngDir = "W";
lng = lng * -1.0;
}
else
{
lngDir = "E";
}
var lngDegInt = Math.floor(lng);
var lngMinInt = Math.floor((lng * 60.0) - (lngDegInt * 60.0));
var lngSecInt = Math.floor((lng * 3600.0) - (lngDegInt * 3600.0) - (lngMinInt * 60.0));
return format100(lngDegInt) + " " + format10(lngMinInt) + " " + format10(lngSecInt) + " " + lngDir;
}