WHELP! geeft advies over ontwerp, bouw en zoekmachine optimalisatie van je website. Ben je hier voor de eerste keer? Start dan bij het 4-stappenplan voor een eigen website.

Google Maps 2 – De Google Maps Ajax API

Google Maps heeft een nieuw uiterlijk: een ander schuifbalk om in en uit te zoomen, een nieuwe knop om terug te keren naar de oorspronkelijke locatie en een paar extra labels om meer te laten zien op de kaart. Onder de motorkap is er veel meer aan de hand; je kunt binnen Google Maps nu gebruiken maken van een nieuwe Ajax API (Application Programming Interface). Dit is dusdanig nieuw dat we beginnen met een nieuwe serie.

De nieuwe Google AJAX API gebruiken
Om van alle nieuwe mogelijkheden gebruik te maken stappen we over naar de nieuwe Google AJAX API. Het aanroepen hiervan is anders dan we tot nu deden. Hiervoor moeten we een aantal dingen aanpassen:

A. Aanroep van de API
Om te beginnen moeten we de nieuwe API aanroepen. Wijzig

<script src="http://maps.google.com/maps?file=api&amp;v=2.s&amp;key=<?= $apiKey ?>" type="text/javascript"></script>

in

<script src="http://www.google.com/jsapi?key=<?= $apiKey ?>" type="text/javascript"/>
<script type="text/javascript">
google.load("maps", "2");
</script>

De variabele $apiKey gebruik ik om verschillende keys te kunnen gebruiken, zodat ik automatisch van key kan switchen als ik op mijn eigen computer werk, of wanneer het op de server staat. Verder laden we hier met google.load() de juiste versie in.

B. Maps.js aanpassen
Dit bestand wordt fors aangepast. Het inladen van de juiste versie gebeurt ook in maps.js. Voeg bovenaan je maps.js het volgende toe:

//set version
google.load("maps", "2");

Als je de laatste testversie wil gebruiken, gebruik dan 2.x. Versie 2 is de laatste stabiele versie.

De load() functie krijgt een nieuwe naam: initialize(); hernoem deze.
Vervang overal waar een functie met een G begint dit door google.maps. (dit heet een namespace). Dit is nog niet per se nodig, maar zal in toekomstige API's verplicht worden.

Onderaan het bestand komt een nieuwe regel die ervoor zorgt dat de initialize() functie wordt ingeladen:

// setOnLoadCallback
google.setOnLoadCallback(initialize);

C. De bodytag aanpassen
Verder moet je de body wijzigen. Verander

<body onload="load();" onunload="GUnload();">

in

<body onunload="google.maps.Unload();">

De onload functie vervalt en pas ook hier GUnload() aan naar google.maps.Unload(). Als het goed werkt je kaart nog steeds en zie je geen javascript fouten. Zie het eindresultaat.

Hoe nu verder?
Hiermee heb je de basis gelegd om meer uit je Google maps te halen. Meer over deze nieuwe mogelijkheden in volgende artikelen.

7 reacties


  1. Arjan Kessels
    22.12.08 - 11:40
    1

    In het voorbeeld zie ik nergens de nieuwe interface terug. Ook niet als ik jouw code overneem en aanpas voor mijn mijn eigen server. Hoe zit dat? Moet je bij Google misschien een andere api aanvragen?

    Arjan


  2. Theo Bakker
    22.12.08 - 12:31
    2

    Dag Arjan,

    bij het aanpassen van dat onderdeel ben ik nog niet beland in mijn verhaal. Dit staat op de rol.

    Groet, Theo


  3. Maarten
    29.12.08 - 16:09
    3

    Hi Theo,

    Bedankt voor deze warming-up. Ik ben benieuwd naar de rest.

    Al je vorige info heeft me enorm geholpen om Google Maps te gerbuiken. Heb zelf ook een aanpassing in je maps.js gemaakt om een eigen InfoWindow te maken mbv CSS.

    Als je wilt kan ik deze code uiteraard geven.


  4. Theo Bakker
    30.12.08 - 18:57
    4

    Dag Maarten,

    Graag! Als je het me stuurt kan ik kijken of ik het kan verwerken in een nieuw artikel.

    Groet, Theo


  5. UberRookie
    30.06.10 - 20:27
    5

    Moet het niet zijn:

    <script src="http://www.google.com/jsapi?key=" type="text/javascript"/>

    ?


  6. UberRookie
    30.06.10 - 20:28
    6

    Vorige comment ging niet goed, maar ik bedoelde dat er een moet worden toegevoegd aan die regel


  7. UberRookie
    30.06.10 - 20:29
    7

    Sorry, weer niet goed….
    Ik heb het over een /script (en dan tussen tags)

Domeinnaam vrij?

  • Test via Byte op .nl, .eu, .be, .com, .net, .org, .biz, .info, .de, .co.uk, .tv, .nu, .cn en .name