Hi,
i have some javascript hier and i need a stop button. Im more into jQuery and don’t know how to do it in plain javascript.
This lets it running:
function start() {
var startpoint = document.getElementById("fromAddress").value;
var endpoint = document.getElementById("toAddress").value;
dirn.loadFromWaypoints([startpoint, endpoint], {
getPolyline: true,
getSteps: true
});
<a class="button-more left-col-bottom" href="javascript:start();">Go!</a>
TriLLi
July 26, 2010, 8:58pm
2
What you can do in your object dirn declare variable for example dirn.Enabled = true;
and in your loop check each time if dirn.Enabled == true continue with execution otherwise stop it.
Example
while(dirn.Enabled)
{
//code
}
I hope this helps
Sorry i’m really not into javascript.
Here is the whole thing:
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
gdir = new GDirections(map, document.getElementById("directions"));
GEvent.addListener(gdir, "load", onGDirectionsLoad);
GEvent.addListener(gdir, "error", handleErrors);
}
}
function updatePoly(d) {
// Spawn a new polyline every 20 vertices, because updating a 100-vertex poly is too slow
if (poly2.getVertexCount() > 20) {
poly2 = new GPolyline([poly.getVertex(lastVertex - 1)]);
map.addOverlay(poly2)
}
if (poly.GetIndexAtDistance(d) < lastVertex + 2) {
if (poly2.getVertexCount() > 1) {
poly2.deleteVertex(poly2.getVertexCount() - 1)
}
poly2.insertVertex(poly2.getVertexCount(), poly.GetPointAtDistance(d));
} else {
poly2.insertVertex(poly2.getVertexCount(), poly.getVertex(lastVertex++));
}
}
function animate(d) {
if (d > eol) {
document.getElementById("step").innerHTML = "<b>Trip completed<\\/b>";
document.getElementById("distance").innerHTML = "Miles: " + (d / 1609.344).toFixed(2);
return;
}
var p = poly.GetPointAtDistance(d);
if (k++ >= 180 / step) {
map.panTo(p);
k = 0;
}
marker.setPoint(p);
document.getElementById("distance").innerHTML = "Miles: " + (d / 1609.344).toFixed(2) + speed;
if (stepnum + 1 < dirn.getRoute(0).getNumSteps()) {
if (dirn.getRoute(0).getStep(stepnum).getPolylineIndex() < poly.GetIndexAtDistance(d)) {
stepnum++;
var steptext = dirn.getRoute(0).getStep(stepnum).getDescriptionHtml();
document.getElementById("step").innerHTML = "<b>Next:<\\/b> " + steptext;
var stepdist = dirn.getRoute(0).getStep(stepnum - 1).getDistance().meters;
var steptime = dirn.getRoute(0).getStep(stepnum - 1).getDuration().seconds;
var stepspeed = ((stepdist / steptime) * 2.24).toFixed(0);
step = stepspeed / 2.5;
speed = "<br>Current speed: " + stepspeed + " mph";
}
} else {
if (dirn.getRoute(0).getStep(stepnum).getPolylineIndex() < poly.GetIndexAtDistance(d)) {
document.getElementById("step").innerHTML = "<b>Next: Arrive at your destination<\\/b>";
}
}
updatePoly(d);
setTimeout("animate(" + (d + step) + ")", tick);
}
GEvent.addListener(dirn, "load", function () {
poly = dirn.getPolyline();
eol = poly.Distance();
map.setCenter(poly.getVertex(0), 16);
map.addOverlay(new GMarker(poly.getVertex(0), G_START_ICON));
map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount() - 1), G_END_ICON));
marker = new GMarker(poly.getVertex(0), {
icon: car
});
map.addOverlay(marker);
var steptext = dirn.getRoute(0).getStep(stepnum).getDescriptionHtml();
document.getElementById("step").innerHTML = steptext;
poly2 = new GPolyline([poly.getVertex(0)]);
map.addOverlay(poly2);
setTimeout("animate(0)", 2000); // Allow time for the initial map display
});
GEvent.addListener(dirn, "error", function () {
alert("Location(s) not recognised. Code: " + dirn.getStatus().code);
});
function start() {
var startpoint = document.getElementById("fromAddress").value;
var endpoint = document.getElementById("toAddress").value;
dirn.loadFromWaypoints([startpoint, endpoint], {
getPolyline: true,
getSteps: true
});
}