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 ////////////////////////////////////////////////////////////////// // // Map drawing and distance tools. // Web site with this code running: http://www.acscdg.com/ // // Utility object to manage a list of way points. Way points are the points // along a course with multiple segments. // // //// function wayPointsManagerNumberOfPoints() { var numberOfPoints = this.wayPointsList.length; return numberOfPoints; } // //// function wayPointsManagerPushWayPoint(wayPoint) { if (this.wayPointsList != null) return this.wayPointsList.push(wayPoint); return null; } // //// function wayPointsManagerGetFirstWayPoint() { var firstWayPoint = null; if (this.numberOfPoints() > 0) firstWayPoint = this.wayPointsList[0]; return firstWayPoint; } // //// function removeLastWayPoint() { var lastWayPoint = null; if (this.numberOfPoints() > 0) lastWayPoint = this.wayPointsList.pop(); return lastWayPoint; } // //// function getLastWayPoint() { var lastWayPoint = null; var wayPointCount = this.numberOfPoints(); if (wayPointCount > 0) lastWayPoint = this.wayPointsList[wayPointCount-1]; return lastWayPoint; } // //// The element list (the actual table rows) is exposed because it is used for temporary display. function addWayPointTableElement(wayPoint) { this.tBodyElement.appendChild(wayPoint.tableRowElement); } // //// function removeWayPointTableElement(wayPoint) { if (wayPoint.tableRowElement != null) this.tBodyElement.removeChild(wayPoint.tableRowElement); } // //// function wayPointsUpdateElements(distanceUnits) { for (var d = 0; d < this.wayPointsList.length; d++) { var wayPoint = this.wayPointsList[d]; wayPoint.tableRowElement = wayPoint.updateElement(distanceUnits, wayPoint.tableRowElement); } } // //// Object to hold wayPointslist: function WayPointsManager(courseNumber, tBodyElement) { this.numberOfPoints = wayPointsManagerNumberOfPoints; this.pushWayPoint = wayPointsManagerPushWayPoint; this.getFirstWayPoint = wayPointsManagerGetFirstWayPoint; this.getLastWayPoint = getLastWayPoint; this.removeLastWayPoint = removeLastWayPoint; this.addWayPointTableElement = addWayPointTableElement; this.removeWayPointTableElement = removeWayPointTableElement; this.updateElement = wayPointsUpdateElements; this.courseNumber = courseNumber; this.wayPointsList = new Array(); this.tBodyElement = tBodyElement; // pointer to the containing tbody element in the table. }