GLatLng.prototype.moveTowards = function(point, distance) { var lat1 = this.lat().toRad(); var lon1 = this.lng().toRad(); var lat2 = point.lat().toRad(); var lon2 = point.lng().toRad(); var dLon = (point.lng() - this.lng()).toRad();
// Find the bearing from this point to the next. var brng = Math.atan2(Math.sin(dLon) * Math.cos(lat2), Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon));
var angDist = distance / 6371000; // Earth's radius.
// Calculate the destination point, given the source and bearing. lat2 = Math.asin(Math.sin(lat1) * Math.cos(angDist) + Math.cos(lat1) * Math.sin(angDist) * Math.cos(brng));
function moveAlongPath(points, distance, index) { index = index || 0; // Set index to 0 by default.
if (index < points.length) { // There is still at least one point further from this point.
// Construct a GPolyline to use the getLength() method. var polyline = new GPolyline([points[index], points[index + 1]]);
// Get the distance from this point to the next point in the polyline. var distanceToNextPoint = polyline.getLength();
if (distance <= distanceToNextPoint) { // distanceToNextPoint is within this point and the next. // Return the destination point with moveTowards(). return points[index].moveTowards(points[index + 1], distance); } else { // The destination is further from the next point. Subtract // distanceToNextPoint from distance and continue recursively. return moveAlongPath(points, distance - distanceToNextPoint, index + 1); } } else { // There are no further points. The distance exceeds the length // of the full path. Return null. return null; } }
var map = new GMap2(document.getElementById('map_canvas'));
var points = [ <? $result = mysql_query("SELECT * FROM location ORDER BY id DESC LIMIT 50"); while($row = mysql_fetch_array($result)){ echo 'new GLatLng('.$row['latitude'].', '.$row['longitude'].'),';
}?> ];
var polyline = new GPolyline(points, '#f00', 6);
var nextMarkerAt = 0; // Counter for the marker checkpoints. var nextPoint = null; // The point where to place the next marker.
// Draw the path on the map. map.addOverlay(polyline);
// Draw the checkpoint markers every 1000 meters. while (true) { // Call moveAlongPath which will return the GLatLng with the next // marker on the path. nextPoint = moveAlongPath(points, nextMarkerAt);
if (nextPoint) { // Draw the marker on the map.
map.addOverlay(new GMarker(nextPoint));
// Add +1000 meters for the next checkpoint. nextMarkerAt += 10000; } else { // moveAlongPath returned null, so there are no more check points. break; } } </script> </body> </html> [/CODE]
to display a map with a route on it i need to change a few things
1......Only have markers where there are GEO locations()
2......I want to be able to click the markers or hover and get more information like time (stored in database with $row['latitude'] and $row['longitude'])
Question
Craig Hopson
hi guys been using this code
to display a map with a route on it i need to change a few things
1......Only have markers where there are GEO locations()
2......I want to be able to click the markers or hover and get more information like time (stored in database with $row['latitude'] and $row['longitude'])
Link to comment
Share on other sites
1 answer to this question
Recommended Posts