TPhoto en hoe de aarde toch niet rond blijkt te zijn

Een paar dagen geleden schreef Michel al over TPhoto, een uitbreiding op de Google Maps API waarmee je zelf afbeeldingen kunt toevoegen aan Google Maps.
Zoals hij aangaf is het inderdaad een oplossing voor het probleem van het ontbreken van kaarten voor Nederland.
Maar het maken van de voorbeelden die er gebruik van maken kostte wat meer tijd dan gedacht. Bijvoorbeeld omdat de aarde niet rond blijkt te zijn!
Zelf een kaart toevoegen
Met TPhoto kun je een willekeurige afbeelding over de bestaande sattelietfoto’s van Google maps leggen. Je geeft de coördinaten van de linkerboven- en rechteronderhoek op en TPhoto zorgt er voor dat de afbeelding op de juiste plek komt te liggen ook als je schuift en/of zoomt.

Op deze pagina zie je een voorbeeld. Het is een weergave van een van mijn eerste fietstochten met de Geko 201 vorige week.
Het is een statische kaart. In de broncode van de pagina kun je zien dat er een lijstje coördinaten staat die samen de lijn van de route vormen en kun je de code voor het koppelen van de afbeelding zien.

Een ‘bewegende’ kaart
Natuurlijk kon dat beter. Ik had al verteld dat ik de dynamische kaarten mooi vind. Ik ben dus in de broncode van die pagina’s gedoken om te kijken hoe ik zo’n track automatisch stap voor stap kon laten opbouwen.

Ik wilde ook de foto’s die ik onderweg gemaakt had net als op de pagina van Dave Whitehead automatisch laten verschijnen op de juiste locatie.

Ik kwam er echter al snel achter dat
1) ze beiden een eigen, op maat gemaakte XML-structuur gebruikten voor de data die ze lieten zien.
2) Dave de foto’s handmatig (of automatisch, maar in ieder geval vast) aan de locaties gekoppeld had.

Ik wilde gebruik maken van het generiekere GPX-formaat waarin ik de tracks ook opgeslagen had en wil de foto’s automatisch laten opzoeken bij Flickr.
Kortom voldoende dingen om te wijzigen en dus voldoende dingen die niet meteen werken/werkten.

Hier is het tussenresultaat.

GPX-formaat
Als je naar de broncode van de pagina kijkt dan zie je dat het niet allemaal even gestructureerd uitziet. Deels is dat het gevolg van het feit dat ik al de derde persoon ben die met de code aan het stoeien is en deels omdat het formaat van het GPX-bestand dat ik gebruikt heb heel anders is dan wat bijvoorbeeld Dave gebruikte.
Zijn databestand ziet er zo (XML-bestand) uit, dat van mij zo (XML-bestand).
Ik wilde liever niet veel tijd gaan besteden aan het aanpassen van het GPX-bestand omdat dat nou eenmaal een formaat is waar veel andere programma’s al mee overweg kunnen (lezen en schrijven).
Maar het had wel de nodige gevolgen voor de interne structuur van het script.

Afstanden
Een van de grootste uitdagingen was het aanpassen van het script dat de afgelegde afstand berekende. Dat lijkt gemakkelijk: gewoon eindpunt – beginpunt, maar dat is natuurlijk niet het geval. Het is de som van alle verschillende trajectjes. Het eerste wat ik moest doen was het aanpassen van de berekening in mijlen (het bleken overigens zeemijlen te zijn (er zijn er namelijk verschillende).
Ik heb inmiddels begrepen dat er meerdere manieren zijn om de afstand tussen twee punten op deze aardbol te berekenen en dat de aarde niet rond is. Zie deze pagina voor de uitleg. Ik gebruik overigens de “Haversine Formula” en omdat de aarde niet rond is kunnen bij de berekeningen kleine afwijkingen optreden.

Foto’s
Ik ben nog niet aan het dynamisch plaatsen van de foto’s toegekomen. Dat zal ik overigens niet helemaal in Javascript kunnen doen. Voor deze pagina maak ik al gebruik van de Flickr API voor het ophalen van de foto’s en coördinaten, dus dat zal wel lukken.
Moeilijker (lees: iets wat ik nog niet eerder gedaan heb) is het om een juiste manier te vinden om te bepalen welke foto wanneer te laten zien.
Ik kan er voor kiezen om dat op basis van de datum/tijd te doen, maar ik doe dat veel liever op basis van de coördinaten (foto’s die dicht genoeg in de buurt zijn genomen). Ook daar moest ik de functies voor het berekenen van afstanden tussen coördinaten voor begrijpen.

Ik kan dus nog even vooruit.

0 0 stemmen
Bericht waardering
2 Reacties
Inline Feedback
Bekijk alle reacties
Paulo
Paulo
19 jaren geleden

Beste Pierre,

Gelet op al je recente posts in de categorie geocoding en de interessante dingen die je allemaal kunt doen met Google Maps zal je de bijgaande post van Teemu Leinonen over Made (Map and Annotation Display Environment) evt. ook interesseren.

Pierre
19 jaren geleden

Hoi Paulo,

Inderdaad, interessante site en ontwikkeling. Ik heb de RSS-feed toegevoegd aan SharpReader. Bedankt voor de tip!