Nullbeta aka HansR - online sinds 2001. Tegelijkertijd baasje en knecht van het slechtst gelezen weblog van het noordelijk halfrond. XHTML en cascading style sheet fetisjist. Parttime usability neuroot. Object oriëntatie losert. SQL wannabe. De ongekroonde koning van de ongedocumenteerde spaghetticode. Verliefd op en ziek van SEO. Vindt zijn Asics tegenwoordig vaak leuker dan zijn laptop.

Nullbeta sluit zich aan bij de woorden van Dante – All hope abandoned, he who entereth here ...

100% spam: de kater komt later

Null, code knagen, cms in de polder, stijlbladen, gelaagd bouwen, MySQL, php, Emmeloord, webservers, toegankelijk, document object model, zzp, organisch, puntkomma kwijt, webstandaards, uhhh zoekmachine spam? Beta. Nullbeta.

Null ...

Nul? Nee null! Uhh, wat is null?

... Beta

Adj. 1. important, of importance - of great significance or value; "important people"; "the important questions of the day"


 

Google Maps: een voorbeeld van GDirections in actie

27 september 2007

Google Maps. Op het moment van schrijven een paar weken uit de beta fase en via de voorpagina van Google beschikbaar. Zelf heb ik de afgelopen zomer met regelmaat gestoeid met een Google Maps mashup. En er soms over geschreven. Onder andere hier, hier, en hier … — en ja ik ben maar een simpele el uu el anders zou ik die anchor tekst wel wat handiger hebben ingevuld :-) Of het interesseert me gewoon niet zoveel. Dat kan natuurlijk ook. Toch?

Anyway, met enige regelmaat zie ik zoekmachine referrals terug die gerelateerd zijn aan Google Maps.

Zoals mensen die zochten op GDirections — het stukje code van de Google Maps API die een routebeschrijving op je kaartje zet en de route van A naar B als tekst retourneert. Het is volgens mij common knowledge en allemaal te lezen in de Google Maps documentatie, maar wie was de cabaratier ook alweer die zei hey als er een markt voor is ….

Bij deze dus een voorbeeldje van een implementatie van GDirections uit de Google Maps API:

/*
De routeLaden() functie wordt aangeroepen. Omdat in mijn toepassing de bestemming bekend is bevat de functie een argument: naar. Dit argument bestaat uit een tekenreeks met het doeladres, zoiets als gelrelaan+34+emmeloord+nederland.
*/

function routeLaden(naar) {

/*
In een eerder stadium heeft de gebruiker het punt van vertrek kunnen opgeven: de straat, het huisnummer en de plaats van vertrek. Deze worden samengevoegd in de variable van die later gebruikt zal worden.
*/

var route = document.getElementById(”routebeschrijving”);
var route_van_straat = document.getElementById(”route-straat”).value;
var route_van_nr = document.getElementById(”route-nr”).value;
var route_van_plaats = document.getElementById(”route-plaats”).value;
var van = route_van_straat + ” ” + route_van_nr + ” ” + route_van_plaats + ” Nederland”;

/*
gdir, mijn instantie van het GDirections object, gebruikt als eerste argument het gmap object (je kaartje) en als tweede argument een variabele die verwijst naar het pagina element waarin je de routegegevens wilt tonen. In mijn geval een div met het id routebeschrijving.
*/

gdir = new GDirections(map, route);

/*
de load event handler roept de onGDirectionsLoad() functie aan die wordt uitgevoerd als de routebeschrijving geladen wordt. Met andere woorden, wat moet er allemaal gebeuren als het gdir object geladen is.
*/

GEvent.addListener(gdir, “load”, onGDirectionsLoad);

/*
De error event handler roept de handleErrors() functie aan die wordt uitgevoerd als er problemen optreden bij het laden van de routebeschrijving. Hier is nog wel wat aardigs mee te doen maar ik heb me beperkt tot het vertalen van de standaard Google Maps foutmeldingen op basis van de gegeven constanten en het ophoesten van een alert box.
*/

GEvent.addListener(gdir, “error”, handleErrors);

/*
stel de taal in voor de output van de routebeschrijving. Je output wordt gelokaliseerd. Links af in plaats van turn left. Verander de inhoud van de taal variabele voor de lol maar eens in us_en en bemerk het verschil
*/

var taal = “nl_nl”;

/* GDirections in actie. Het gdir object wordt uitgevoerd met als argumenten het vertrekadres, het doeladres en de locale / taal waarin de routebeschrijving moet worden getoond
*/

gdir.load(”from: ” + van + ” to: ” + naar, { “locale”: taal });

}

/*
In de onGDirectionsLoad functie() doe ik dingen die in mijn situatie van belang zijn. Zoals het positioneren van de container div die de routebeschrijving bevat. Voor het functioneren van de GDirections functionaliteit is dit verder niet van belang.
*/

function onGDirectionsLoad() {
var container_route = document.getElementById(”container-routebeschrijving”);
container = document.getElementById(”container”);
container_route.style.display = “block”;
container_route.style.left = (container.offsetLeft + 6) + “px”;
container_route.style.top = (container.offsetTop + 6) + “px”;
container_route.style.visibility = “visible”;
var sluit = document.getElementById(”sluit-routebeschrijving”);
var iw = map.getInfoWindow();
iw.hide();
}

function handleErrors(){
if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS) {
alert(”De locatie van het opgegeven vertrekadres kon niet worden bepaald.nFoutcode: ” + gdir.getStatus().code);
}
else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
alert(”Er is iets misgegaan. Maar het is onduidelijk WAT!n Foutcode: ” + gdir.getStatus().code);
}
else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
alert(”Een parameter ontbreekt. Misschien was er geen vertrekpunt ingevoerd.n Foutcode: ” + gdir.getStatus().code);
}
else if (gdir.getStatus().code == G_GEO_BAD_KEY) {
alert(”De Google Maps sleutel is ongeldig of de gebruikte sleutel is niet geldig voor dit domein. n Foutcode: ” + gdir.getStatus().code);
}
else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
alert(”De aanvraag voor het plannen van een route is mislukt.n Foutcode: ” + gdir.getStatus().code);
}
else {
alert(”Er is iets misgegaan. Maar het is volstrekt onduidelijk WAT de oorzaak is!”);
}
}

Een werkend voorbeeld van bovenstaande code kom je tegen op de leukvoorkids.nl pagina met tips voor een uitje met kinderen. Klik op een markertje en klik vervolgens op het route ikoontje in de InfoWindow ballon. Je kunt dan je vertrekadres opgeven om vervolgens de GDirections functie in actie te zien.

Linktip: een veeeeel betere uitleg van de mogelijkheden van Google Maps dan ik met m’n suffe kop kan geven vind je overigens op de Google Maps tutorial website van Mike Williams.

Geschreven door HansR
Er is nog niet gereageerd op deze tekst.
Geplaatst in Google Maps
Getagged als , , ,

Reageren:




De volgende tags kun je in je reactie gebruiken:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


RSS feed voor reacties op deze blogpost. TrackBack URL