• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

API für gc.com?

steffenvogel

Geocacher
Hab schon öfters mal was von ner API von gc.com gehört.
Ich bin grad am coden einer Koordinaten DB für Geocaching, Adressbuch, MTB Touren etc..
Jetzt wollte ich mich mal informieren, wie es mit der API von gc.com aussieht? Diese Lösungen mit den Pocket Queries ist doch auch nicht das Wahre...
Hat sich da mal was getan? Gibts Alternativen? Wie siehts in der Zukunft damit aus?

Steffen
 

Carsten

Geowizard
steffenvogel schrieb:
Hat sich da mal was getan?

Nein.

steffenvogel schrieb:
Gibts Alternativen?

Opencaching. Am besten, du wirfst mal einen Blick auf das XML-Interface.

steffenvogel schrieb:
Wie siehts in der Zukunft damit aus?

Für gc.com? Da wirst du wohl lange drauf warten können.
<glaskugel>Wenn es da überhaupt mal was geben wird, wird es nur als kostenpflichtiger Service verfügbar sein.</glaskugel>
 
OP
S

steffenvogel

Geocacher
Mhm wirklich schade...
Opencaching hab ich mir noch nie angeschaut...
Ich will eigentlich immer bei einem Verzeichnis bleiben.
Geocaching.com hat ja einfach mehr Caches...
Wenns genug Anfragen für eine API bei Geocaching.com gab wird sich da hoffentlich was tun...

Steffen
 
OP
S

steffenvogel

Geocacher
Ich habe gerade noch mal über die API nachgedacht. Dabei bin ich auf den Google Earth Networklink gestoßen, der so wie ich es burteilen kann einen Zähler für jeden Benutzer besetzt, der die Anzahl der Abfragen pro User limitiert.
Hier ist mal der KML Code:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">

<NetworkLink>
  <open>1</open>
  <name>Geocaching Network KML</name>
  <description>Geocaching.com Caches located in the view window of Google Earth.</description>
  <open>1</open>
  <visibility>1</visibility>
  <refreshVisibility>0</refreshVisibility>
  <Url>
    <href>http://api.groundspeak.com/networkkml/geocache.aspx?key=[b]User Key[/b]</href>
    <viewRefreshTime>3</viewRefreshTime>
    <viewRefreshMode>onStop</viewRefreshMode>
  </Url>
</NetworkLink></kml>

Laut dem KML Tutorial von Google (http://earth.google.com/kml/kml_tut.html#network_links)
Gibt der Networklink eine KML Datei mit den Caches als Punkten zurück.
Eventuell kann man mit der Übergabe von den aktuellen Fensterausschnitt in Google Earth die Rückgabe auf den aktuellen Ausschitt begrenzen um den unötigen Traffic zu vermeiden.
(GET /networkkml/geocache.aspx?key=User Key&BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1)

Eigentlich sollte es problemlos möglich sein diesen Networklink mit PHP oder sogar nur dem JS Google Maps Framework zu phrasen...
Das Google Maps Framework bietet sogar die Möglichkeit KML Dateien anzuzeigen. (http://www.google.com/apis/maps/documentation/#XML_Overlays)
Leider ist mein Server zurzeit down, sodass ich nicht coden kann :(

Hat jemand schoneinmal Erfahrungen damit gesammelt? Oder noch weiter Tipps? Hat jemand von euch schon mal sein Limit erreicht?

Steffen
 
OP
S

steffenvogel

Geocacher
Juhu es geht. Wie vermutet muss mit
Code:
GET /networkkml/geocache.aspx?key=User Key&BBOX=[longitude_west, latitude_south, longitude_east, latitude_north] HTTP/1.1
der gewählte Fensterausschnitt aus Google Earth übergeben werden.
Zurückgegeben bekommt man bei einem richtig gewählten Bereich folgendes:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">

<Document><Style id="defaultIcon"><LabelStyle id="defaultIcon">
  <scale>0</scale>
</LabelStyle></Style><Style id="hoverIcon"><IconStyle id="hoverIcon">
  <scale>1.3</scale>
</IconStyle></Style><StyleMap id="defaultStyle">
  <Pair>
    <key>highlight</key>
    <styleUrl>#hoverIcon</styleUrl>
  </Pair>
  <Pair>
    <key>normal</key>
    <styleUrl>#defaultIcon</styleUrl>
  </Pair>
</StyleMap><name>Geocaching.com Network KML</name><Folder><Style id="84255962-ec6f-49d0-822f-e4931dd3426b" /><name>Geocache Name (Difficulty/Terrain)</name><description>You have 198 views left today
Viewing 2 caches.</description><open>1</open><Folder><Style id="f8ab819b-b63b-4b95-857b-a87fbe400e24" /><name>Traditional Cache (2)</name><description /><open>0</open><Placemark><styleUrl>#defaultStyle</styleUrl><name>Laguna Puerca (1.5/1.5)</name><Style id="7c9461d2-830d-4610-91a7-1d5c89b08703">
  <Icon>
    <href>http://www.geocaching.com/images/kml/2.png</href>
  </Icon>
</Style><LookAt>
  <heading>0</heading>
  <tilt>0</tilt>
  <range>0</range>
  <latitude>37.7366</latitude>
  <longitude>-122.4896</longitude>
</LookAt><Point><coordinates>-122.4896, 37.7366, 0 
</coordinates></Point><description><![CDATA[ <a href='http://www.geocaching.com//seek/cache_details.aspx?guid=3dfdbbfd-987c-4b44-8903-aebfbbc5356d'>View Cache Details</a><br> <a href='http://www.geocaching.com//bookmarks/mark.aspx?guid=3dfdbbfd-987c-4b44-8903-aebfbbc5356d&wpttypeid=2'>Bookmark it</a><br>]]></description><visibility>1</visibility></Placemark><Placemark><styleUrl>#defaultStyle</styleUrl><name>Sigmund's Cache (2/1.5)</name><Style id="76ae24d1-dcc0-48b3-806e-e20e8c31986e">
  <Icon>
    <href>http://www.geocaching.com/images/kml/2.png</href>
  </Icon>
</Style><LookAt>
  <heading>0</heading>
  <tilt>0</tilt>
  <range>0</range>
  <latitude>37.7369</latitude>
  <longitude>-122.4824</longitude>
</LookAt><Point><coordinates>-122.4824, 37.7369, 0 
</coordinates></Point><description><![CDATA[ <a href='http://www.geocaching.com//seek/cache_details.aspx?guid=be8dca47-cbf9-4312-8f51-4ff6d852997d'>View Cache Details</a><br> <a href='http://www.geocaching.com//bookmarks/mark.aspx?guid=be8dca47-cbf9-4312-8f51-4ff6d852997d&wpttypeid=2'>Bookmark it</a><br>]]></description><visibility>1</visibility></Placemark></Folder></Folder></Document></kml>
Das ist eine normale KML Datei. Die auch mit Google Maps (also online) betrachtet werden kann.
Hier gibts mal einen Beispiellink:
[lange url entfernt]
Anscheinend gibts es noch einpaar Syntaxfehler im Styles Attribut.
Das ist aber kein Problem.
Damit sollte eigentlich ein Durchbruch für die API geschehen sein. ;)
Demnächst werde ich dann mal selber was Coden, das diese Daten verwendet.

Noch ne Frage: Wie viel Views hat man pro Tag?
Bezieht sich das auf die Caches? (ein Cache = ein View) Oder auf die Anfragen (eine Anfrage = ein View).
Bei letzterem wäre es möglich den gewählen Bereich auf komplett Deutschland zu vergrößern. Um mit nur einem View gleich alle Caches von Deutschland zu bekommen.
Ich glaube mich jedoch daran zu erinnern, dass gc.com diesen Bereich auf eine maximale Zahl von Caches pro Anfrage begrenzt hat.

Steffen
 

Carsten

Geowizard
steffenvogel schrieb:
Damit sollte eigentlich ein Durchbruch für die API geschehen sein. ;)
Demnächst werde ich dann mal selber was Coden, das diese Daten verwendet.

Und wozu sollen die verfälschten Daten gut sein? Dass das GoogleEarth-Interface von gc.com nicht die exakten Koordinaten liefert, um ein Auslesen derselben zu verhindern, ist dir bewusst?
 
OP
S

steffenvogel

Geocacher
Carsten schrieb:
steffenvogel schrieb:
Damit sollte eigentlich ein Durchbruch für die API geschehen sein. ;)
Demnächst werde ich dann mal selber was Coden, das diese Daten verwendet.

Und wozu sollen die verfälschten Daten gut sein? Dass das GoogleEarth-Interface von gc.com nicht die exakten Koordinaten liefert, um ein Auslesen derselben zu verhindern, ist dir bewusst?
Mhm ja leider.
War nicht ganz so ernst gemeint.
Mir geht es eher darum, ein eigenes auf Google Maps basierendes System zu schaffen, in das ich auch selber Punkte, Tracks usw. laden kann. Z.b. um die Daten meines GPS auszuwerten.
Eine Art Adressbuch mit Google Maps. Hab schon einige Sachen gefunden, die ich einbauen will, wenn ich mal wieder Zeit habe.

Folgendes habe ich noch gefunden:
http://www.geocaching.com/about/google.aspx
Please note that the coordinates used in Google Earth are only an approximation and can be up to 100 ft from the actual location. Do not use the coordinates in Google Earth for cache hunting. It is merely a viewing tool for getting a general idea of the cache location.
und
There are some limitations of this service due to the amount of strain the queries have on the database and the desktop application. For example, a maximum of 150 cache listings will be shown on the map at any given time. To get all the caches in the area you will need to zoom to a level that shows less than 150 listings. However, a message will be available to let you know whether you are seeing all the caches in the area, or just a subset of them. When the number exceeds 150 you will receive a random sampling.

[EDIT]
Die meisten relevanten Daten liegen in dem HTML Code und sind mit Span Tags und eigenen Ids gekennzeichnet. Mit einem HttpRequest kann man diese Daten bequem mit PHP oder JS auswerten.

Span Id
----------------------
Hints
CacheName
CacheOwner
LatLon
UTMFormat
Location
DateHidden
WaypointName
Difficulty (nur als Bild)
Terrain (nur als Bild)
ShortDescription
LongDescription

Leider gibts dann noch das Problem mit dem Login.

[/EDIT]

Steffen
 
Hallo,

steffenvogel schrieb:
Mir geht es eher darum, ein eigenes auf Google Maps basierendes System zu schaffen,
in das ich auch selber Punkte, Tracks usw. laden kann. Z.b. um die Daten meines GPS auszuwerten.
Eine Art Adressbuch mit Google Maps. Hab schon einige Sachen gefunden,
die ich einbauen will, wenn ich mal wieder Zeit habe.

Schau dir MGM mal an.

Zwei Beispiel:

Kurpfalz AdventsCaches
Kurpfalz Member

Gruß
KDB

PS: Steffen mach ein Paar zeilenvorschübe [enter] in die Zitate hinein, dann muss man nicht so scrollen. Danke
 
OP
S

steffenvogel

Geocacher
Schön, MGM habe ich bisher noch nicht gekannt.
Leider is es ja ein Windowsprogramm :(
Soweit ich es am Code erkennen konnte, werden die Maps statisch erstellt.
Ich versuche zur Zeit was dynamisches zu programmieren, das sich an der gc.com Datenbank bediehnt.
Interessant finde ich die Möglichkeiten zum Auslesen der Datenbank.
Wie kommst du zu den genauen Koordinaten?
Wie greifst du generell auf die Daten von gc.com zu?
Benötigt man dazu einen Premium Account?

Kann man sich auf deiner Page auch nur den Quellcode runterladen?

Steffen
 
steffenvogel schrieb:
Schön, MGM habe ich bisher noch nicht gekannt.
Leider is es ja ein Windowsprogramm :(
Natürlich, denn es soll ja nicht für die Minderheit sein. :D

steffenvogel schrieb:
Soweit ich es am Code erkennen konnte, werden die Maps statisch erstellt.

Ja, das ist bewusst so gewollt. Karten wie Memberkarte oder Adventscaches ändern sich nicht so schnell. Auch soll keine Last bei GC.com erzeugt werden.

steffenvogel schrieb:
Ich versuche zur Zeit was dynamisches zu programmieren, das sich an der gc.com Datenbank bediehnt.
Interessant finde ich die Möglichkeiten zum Auslesen der Datenbank.
Wie lange meinst du werden Anfragen von deinem Server an GC.com ausgeführt, wenn massive Anfragen von deinen Anwender kommen?

steffenvogel schrieb:
Wie kommst du zu den genauen Koordinaten?
Wie greifst du generell auf die Daten von gc.com zu?
Benötigt man dazu einen Premium Account?
Magic
Html
nein

steffenvogel schrieb:
Kann man sich auf deiner Page auch nur den Quellcode runterladen?
Ne, sonst währe es ja keine Magic meht. ;)

KDB
 
OP
S

steffenvogel

Geocacher
KoenigDickBauch schrieb:
steffenvogel schrieb:
Ich versuche zur Zeit was dynamisches zu programmieren, das sich an der gc.com Datenbank bediehnt.
Interessant finde ich die Möglichkeiten zum Auslesen der Datenbank.
Wie lange meinst du werden Anfragen von deinem Server an GC.com ausgeführt, wenn massive Anfragen von deinen Anwender kommen?
Naja ich denk das ich mit meinen Anfragen den Server nicht überlasten werde. Eigentlich will ich es ja nur für mich selber entwickeln....
Genauer gesagt sollen standartmäßig nur die KML Requests laufen.
Sollte ich mich dann für einen oder mehrere Caches entschieden haben,
ziehe ich mir mithilfe der HTML Request die Cachebeschreibungen.
Das dürfte sogar den Server weniger belasten, als wenn ich die Seite normal besuche, da ich die ganzen Bilder nicht laden muss.

KoenigDickBauch schrieb:
steffenvogel schrieb:
Wie kommst du zu den genauen Koordinaten?
Wie greifst du generell auf die Daten von gc.com zu?
Benötigt man dazu einen Premium Account?
Magic
Html
nein
Na genau so wollte ich es jetzt auch machen.
Kannste mir vielleicht verraten, wie du dich dann innerhalb eines HTTP Requests anmeldest? Oder sendest du einfach immer diese User Cookie mit?

KoenigDickBauch schrieb:
steffenvogel schrieb:
Kann man sich auf deiner Page auch nur den Quellcode runterladen?
Ne, sonst währe es ja keine Magic meht. ;)

Schade :( Wenigstens ein paar Tipps ;)

Steffen
 
steffenvogel schrieb:
Kannste mir vielleicht verraten, wie du dich dann innerhalb eines HTTP Requests anmeldest?
Das geht z.B. mit dem Perl-Modul WWW::Mechanize ganz einfach. Kleine Einführung in das Thema: http://www.linux-magazin.de/heft_abo/ausgaben/2004/03/datenruessel

Um an die Cache-Daten von gc.com zu gelangen gibt es afaik nur 2 Möglichkeiten:
Entweder man benutzt ein "Spider-Script", das die Daten von der gc.com Seite sammelt, aber viel Traffic auf deren Server erzeugt und deshalb von Groundspeak nicht gern gesehen wird. Oder man lässt sich als Premium-Member ein PocketQuery schicken. Dann erhält man eine gpx-Datei per eMail zugeschickt, mit allen wichtigen Cache-Daten drin.

Ich arbeite auch ein einem "dynamischem" Script, das auf Basis eines Pocketquery-Files eine GoogleMap erstellt. Allerdings liegt das Ganze momentan aus Zeitgründen etwas auf Eis.
 
OP
S

steffenvogel

Geocacher
Hört sich recht gut an..

Leider kenn ich mich mit Perl überhaupt nicht aus.
Bestimmt gibts sowas aber auch für PHP oder JS.

Ich kenne aber noch ne dritte Möglichkeit an die wenn auch etwas ungenauen Koordinaten zu kommen: den GoogleEarth Network Link.

Ich bin gerade noch dabei den Quelltext für die Online Geocaching.com Google Maps zu entschlüsseln, da diese Koordinaten genauer sind als die für Google Earth...

Steffen
 
Also für PHP gibts es sowas afaik nicht, habe lange nach etwas vergleichbarem gesucht.

Über den "GoogleEarth Network Link" bekommst du aber nur die Cache-Koordinaten, aber nicht die Daten wie Cache-Typ, Schwierigkeit, Owner etc. raus, oder?

Mir schwebt da folgende Lösung vor: Das gpx-File aus dem Pocket Query in eine Datenbank einlesen und dafür eine Abfragemaske basteln, wo man nach Caches suchen und filtern kann. Aus dem Ergebnis wird dann automatisch eine Googlemap generiert. Damit wären dann z.B. so Sachen wie "Zeige mir alle Tradis, Earthcaches und Webcams, die nicht schwieriger sind als 3/3 sind auf einer Googlemap" möglich. Das fände ich ganz praktisch.
 
Jurgen & co schrieb:
Chip & Chap

Dies kannst du ganz einfach machen mit GSAK.net.
Nein, denn ich möchte auch eine (automatisch) täglich aktuelle Online-Googlemap mit den Caches aus meiner Gegend. Das geht damit leider nicht. Dazu müsste das GSAK zumindest mal unter Linux laufen. Dann könnte man das evtl. auch damit scripten.
 
-tiger- schrieb:
Chip & Chap schrieb:
Also für PHP gibts es sowas afaik nicht, habe lange nach etwas vergleichbarem gesucht.

Du meinst eine Funktion zum Spidern??

http://de3.php.net/manual/de/ref.curl.php

Hey, cool! Genau sowas hab ich mal gesucht. Habe es inzwischen aber schon mit Perl gelöst. :wink: Wobei das Spidern nach Caches ja (zumindest als PM) unnötig ist, da bekommt man sein Cache-Suchergebnis ja frei Haus geliefert... Aber für andere Automatisierungen ist das ganz praktisch.
BTW: Würde gc.com endlich mal ne API anbieten, könnte man sich das alles sparen! :roll:
 
Oben