Zitat von vermeer
Hmm hmm hmm, erst Java lernen zu müssen ist schon ein großes Hindernis...
Nunja, wenn du Programmieren möchtest, dann musst du nunmal auch eine Programmiersprache lernen. Java ist jedenfalls eine sehr dankbare Sprache, da sie dir sehr viel Arbeit abnimmt.
Zitat von vermeer
Habe auch schon länger gegoogelt, Android-Code-beispiele gibt es ja schon einige, aber die decken immer nur einen Teil meies Problems ab:
Hehe, wenn es dein Programm schon fertig als Beispiel gäbe, dann müsstest du es ja nicht mehr programmieren
Wenn du deine Probleme schön sauber in einzelne Komponenten aufteilst, dann reichen diese Beispiele aus. Am Schluss baust du dann aus all den kleinen Komponenten das Gesamtsystem.
Zitat von vermeer
Aber viellecht beschreie ich wirklich erstmal was ich eigentlich vorhabe:
Prinzipiell will ich eine App für meine Website http://www.kitewiese.de erstellen:
Step 1:
Die App kann nicht viel: Sie holt sich den Standort des Users und zeigt die in seiner Nähe befindlichen Kitewiesen an: Als Liste (Step 1.1.: auch als Karte)
Codebeispiele für solche dieses Problem habe ich schon gefunden, nur gehen alle davon aus, dass die Daten im Handy vorhanden sind. Die Daten der eigenen Kitewiesen liegen aber auf einem Webserver....
Step 2: User kann sich einloggen und ein paar Werte der Kitewiese ändern (Grashöhe...)
Step 3: User kann Bilder fotographieren und hochladen
Alles anzeigen
Für Step1 reicht serverseitig natürlich ein ganz einfaches Skript. Da sich die User aber zumindest für Step3 auch authentifizieren müssen, empfiehlt es sich gleich auf sowas wie SOAP (http://de.wikipedia.org/wiki/SOAP) zu setzen. SOAP ist allerdings nicht ganz einfach und vielleicht willst du am Anfang lieber schnelle Erfolgserlebnisse. Ab Step2 allerdings würde ich mir wirklich überlegen auf SOAP zu wechseln. Das lohnt sich auf jedenfall für spätere Versionen.
Deine allerste Version wird also so aussehen:
- Ein Hauptbildschirm auf dem eine Liste der Kitewiesen präsentiert wird.
- Ein Abfragemodul welches die Koordinaten an den Server übermittelt und eine Liste der Kitewiesen zurückgibt.
Das ist doch ein sehr überschaubares Projekt um mit dem Programmieren anzufangen.
Du musst dir also zuerst die Frage stellen, wie denn die Daten auf dem Server hinterlegt sind. Am besten sollten für jede Wiese die Geo-Koordinaten hinterlegt sein. Deine Arbeit beginnt also nicht auf dem Android-Handy, sondern auf deinem Server. Was du benötigst ist ein Skript, welches Geokoordinaten erhält und daraufhin eine Liste an Wiesen zurückgibt. Sowas kannst du z.B. in PHP schreiben.
Die Anfrage an dein Skript erfolgt via HTTP Get request z.B. so:
http://www.kitewiese.de/getwiesen.php?lat=<latitude>&long=<longitude>
Das Skript erhält also einen Längen- und einen Breitengrad und muss jetzt feststellen welche Wiesen in der Nähe sind. Dazu müsstest du für jede Wiese in der Datenbank den Abstand zur aktuellen Position berechnen. Das ist aber nicht sehr datenbank- und rechnerfreundlich, weil du es nicht mit einer einzigen Abfrage erledigen kannst. Daher denkst du dir einfach ein Quadrat, dessen Mittelpunkt der aktuelle Standort ist. Dann kannst du jeweile einen Maximalen und einen Minimalen Breiten-/Längengrad berechnen und mit einer Datenbankabfrage alle Wiesen in der Nähe finden.
Die Breitengrade haben einen konstanten Abstand von: Erdumfang/360 ~ 111km
1 km Abstand entspricht also ca. 0.009 Breitengrad.
Der Abstand der Längengrade ist abhängig vom Breitengrad. An den Polen ist dieser Null und am Äquator ebenfalls ca. 111km. Der genaue Abstand berechnet sich: 1 Längengrad = 1 Breitengrad * cos(Breitengrad)
1km Abstand ist also ca. (0.009 * cos(Breitengrad)) Längengrad
Jetzt kannst du einen maximalen Abstand in jede Richtung festlegen und dann mit einer Datenbankabfrage alle Wiesen in dem vorgegebenen Quadrat abfragen.
Dein Skript gibt dann einfach eine Liste mit den Wiesen im Klartext (nicht HTML) aus, welche dann von deiner Android-App entgegen genommen wird. Die Liste kann z.B. so aussehen:
<id>|<lat>|<long>|<Name>|<Beschreibung>
1|49,3N|47,5E|Kitewiese 1|Tolle Kitewiese nahe Musterstadt
2|.....
Sobald du diesen Teil programmiert hast, ist der Rest eigentlich nur noch ein Klax. Du musst dann nur noch die Anfrage an den Server abschicken und das Ergebnis zeilenweise einlesen. Aus den Geo-Koordinaten der Wiesen kannst du dann auch den Abstand zur aktuellen Position berechnen und die Liste sortiert nach Entfernung ausgeben.