Bygg en egen karta med Google Maps från en lista med adresser
Google Maps har ett XML-format för kartdata som heter KML. KML kan innehålla kartpunkter, geometrisk figurer (om man vill markera ett helt område på kartan), bildöverlägg o.s.v. Om man har en färdig KML-fil så anropar man helt enkelt http://maps.google.com/maps?q=http://minserver.com/minfil.kml, så visas alla punkter och annat som KML-filen innehåller.
Hur skapar man då enklast en KML-fil med punkter? Ett sätt är att skriva ihop den för hand. Det är ganska jobbigt, särskilt som punkterna fungerar bäst med koordinater. Men som tur är så finns en adress-till-kartpunkt-omvandlare inbyggd i Google Maps! Såhär använder man den:
- Skaffa en utvecklarnyckel för Google Maps: http://www.google.com/apis/maps/signup.html
- Klipp ut Placemark-taggen och klistra in den inuti Folder-taggen
- Fortsätt göra geokodningar som i punkt 2 och klistra in dina Placemarks i KML-filen
- På varje placemark kan du lägga till information, t.ex. en name-tag och en description-tag. Man kan också byta ut punkternas ikoner, lägga till bilder och mycket annat. Läs mer i KML-manualen.
- Testa din karta: http://maps.google.com/maps?q=http://minserver.com/minfil.kml
- För att styra vilket zoom-läge kartan ska starta i, lägg till &z=4 när du anropar KML-filen
- För att styra vilken centralpunkt kartan ska visa, lägg till ll=0,0 (byt ut 0,0 mot din valda longitud och latitud).
- Om du har många punkter kan du lägga dem i flera foldrar med hjälp av flera Folder-taggar. Om man klickar på en folder så zoomar kartan automatiskt in så att alla
Processen ovan kan självklart automatiseras helt, antingen genom att scripta processen (enklast) eller genom att göra de här sakerna med Google Maps API:t (snyggast). Att göra geokodning av adresser tar några sekunder per punkt, så det smart att göra kodningen i förväg och spara KML-filen statiskt för att få bra hastighet.
Här är ett exempel som jag själv har gjort, över ett klädmärkes återförsäljare: camilla norrbacks världskarta
Anders Bornholm
2007-10-30