Ich habe in diesem Dokument einmal kurz zusammengefasst, was für Neulinge auf Twitter wichtig ist und was zu beachten ist. (Download als PDF)
Anregungen und Fragen dazu nehme ich natürlich über die Kommentare entgegen.
Ich habe in diesem Dokument einmal kurz zusammengefasst, was für Neulinge auf Twitter wichtig ist und was zu beachten ist. (Download als PDF)
Anregungen und Fragen dazu nehme ich natürlich über die Kommentare entgegen.
Gerade seit Google bei der intensiven Benutzung seines Kartendienstes Bezahlung fordert ist ein Aufschwung in der Benutzung von Openstreetmap zu spüren. Die Vorteile sind klar und überzeugend:
Als Schnittstelle zur Abfrage von Kartendaten ist der Nominatim-Dienst gedacht. Damit sind Suchanfragen nach Orten möglich, die dann als Punkt oder Polygon zurückgegeben werden.
Die Abfrage http://nominatim.openstreetmap.org/search?q=Westerland,Sylt&format=json
gibt beispielsweise das folgende JSON-Objekt zurück:
[
{
"place_id":"154218904",
"licence":"Data Copyright OpenStreetMap Contributors, Some Rights Reserved. CC-BY-SA 2.0.",
"osm_type":"node",
"osm_id":"27385079",
"boundingbox":[
"54.896578063965",
"54.916581878662",
"8.2956716918945",
"8.3156726455688"
],
"lat":"54.9065808",
"lon":"8.3056721",
"display_name":"Westerland, Sylt, Kreis Nordfriesland, Nordfriesland, Schleswig-Holstein, Deutschland, Europa",
"class":"place",
"type":"town",
"icon":"http://nominatim.openstreetmap.org/images/mapicons/poi_place_town.p.20.png"
},
{
"place_id":"8034707",
"licence":"Data Copyright OpenStreetMap Contributors, Some Rights Reserved. CC-BY-SA 2.0.",
"osm_type":"node",
"osm_id":"794524754",
"boundingbox":[
"54.897264709473",
"54.91726852417",
"8.2999899291992",
"8.3199908828735"
],
"lat":"54.9072656",
"lon":"8.3099903",
"display_name":"Westerland, Bahnhofsvorplatz, Westerland, Sylt, Kreis Nordfriesland, Nordfriesland, Schleswig-Holstein, 25980, Deutschland",
"class":"railway",
"type":"station",
"icon":"http://nominatim.openstreetmap.org/images/mapicons/transport_train_station2.p.20.png"
}
]
Es werden uns alle Elemente zurückgegeben, die Westerland/Sylt heißen. Darunter ist der Ort und auch der Bahnhof, den wir jedoch durch die Eigenschaften class und type unterscheiden können. Die Daten können in Form einer HTML-Seite, im JSON- und im XML-Format angefordert werden.
Richtig interessant wird es jedoch, wenn man polygon=1 anhängt. Dadurch erhält man die Begrenzung des aktuellen Objektes, um es zu zeichnen oder zum Beispiel die Fläche zu berechnen. Weitere Parameter finden Sie hier.
Das Kreuzprodukt gibt einen Normalvektor auf die beiden angegebenen Vektoren an. Zur Berechnung geben Sie die ersten beiden Vektoren ein und klicken Sie auf berechnen.
Eine Smartphone-App ist meist ein sehr umfangreiches Projekt, das sich über lange Zeit hinziehen kann und eine große Menge an Zeit für die Entwicklung beansprucht. Genau das kann Ihnen dieser Artikel auch nicht abnehmen, aber ich möchte beim Einstieg in die Entwicklungsumgebung und die Erstellung einer ersten, einfachen Anwendung helfen.
Von Google selbst wird die Verwendung der Eclipse-IDE empfohlen. In Verbindung dem Android-SDK vom Suchmaschinenriesen selbst ist damit die nahtlose Entwicklung innerhalb der IDE von der ersten Programmzeile bis zur fertig kompillierten App möglich.
Zur Programmierung wird Java verwendet.
Zur Installation von Eclipse lädt man sich zu Beginn die aktuelle Version von der offiziellen Webseite herunter. Ich empfehle für den vorliegenden Zweck die Verwendung von „Eclipse Classic“. Nach dem Download entpackt man einfach die zip-Datei und die Entwicklungsumgebung darin in einem beliebigen Ordner starten.
Das SDK-Paket erhält man hier. Darin enthalten ist der Android-Emulator, der es ermöglicht die Apps auf dem Computer zu testen, auch wenn man kein Android-Smartphone besitzt, und die Komponenten zur Erstellung am Ende der Entwicklung. Diese Komponente wird durch einen Assistenen installiert.
An dieser Stelle empfehle ich bereits eine neue AVM (Android Virtual Machine) zu erstellen. Dazu muss vorher die entsprechende Version von Android heruntergeladen werden.
Um das Android-SDK mit der Eclipse-IDE zu verbinden ist es nötig das ADT-Plugin von Google zu installieren. Dazu startet man die Entwicklungsumgebung mit eclipse.exe. Wenn das Arbeitsverzeichnis festgelegt wurde, darin wird der Code und alle Ressourcen gespeichert, geht man auf Help > Install New Software…. Über Add kann man eine neue Quelle für Pakete hinzufügen. Geben Sie dem neuen Eintrag einen beliebigen Namen und tragen Sie bei der Adresse ein:
https://dl-ssl.google.com/android/eclipse/
Wählen Sie im erscheinden Baum Developer Tool und installieren Sie das Paket.
Nach einem Neustart von Eclipse sollte das Plugin fertig installiert sein, jedoch muss unter Window > Preferences unter Android noch der Pfad zum Android-SDK angegeben werden.
Um eine neue Android-App zu erstellen wählen Sie File > New > Project…. Dort wählen Sie im Ordner Android den Punkt Android Project.
Im folgenden Fenster geben Sie dem Projekt einen Namen, im nächsten geben Sie die Zielversion von Android an.
Im letzten Fenster müssen Sie dem Paket noch einen Namen geben, eine Activity anlegen und auswählen in welcher Version von Android Ihr Programm unterstützt wird.
Der Paketname sollte eindeutig sein und irgendwie auf Sie und Ihre App hinweisen. Es darf auch ruhig Ihre echte Domain beeinhalten. Die Activity ist sozusagen die Hauptfunktion bzw. der Bildschirm, der bei Start der App aufgerufen wird.
Klicken Sie auf Finish, um die App einzurichten. Jetzt müsste alles für die Programmierung bereitstehen.
Öffnen Sie den Baum auf der linken Seite und doppelklicken Sie auf res/AndroidManifest.xml. In dieser Datei werden die Haupteinstellungen der App angegeben, wie der angezeigte Namen, das Icon und die Rechte, die für die Benutzung erforderlich sind. Texteinträge sollten jedoch in der Datei res/values/strings.xml angegeben und hierhin verlinkt werden. Alle Einstellungen erreichen Sie über Tabs am unteren Rand.
Öffnen Sie durch einen Doppelklick res/layout/main.xml. Daraufhin erschient der Startbildschirm der App, der nun durch Daraufziehen mit Bedienelementen versehen werden kann. Sie können hier Textfelder, Knöpfe, Bilder usw. hinzufügen. Zusätzlich kann das Layout auch über die Bearbeitung der XML-Datei bearbeitet werden.
Endlich kommen wir zum Hauptteil: Dem eigentlichen Programmieren. Die weitere Vorgehensweise hängt natürlich sehr stark davon ab, welche App sie erstellen wollen und so gibt es keine „Patentlösung“.
Um den Quellcode zu öffnen, doppelklicken Sie auf src/<Paketname>/<Activity>.java. Vor Ihnen sollte nun etwa folgendes zu sehen sein:
package test.abc;
import android.app.Activity;
import android.os.Bundle;
public class AbcActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Ihre Aktivität erweitert also die Klasse Activity und ruft beim Starten der App durch
setContentView(R.layout.main);
den Startbildschirm auf.
Um auf Benutzereingaben reagieren zu können sind natürlich noch Event-Handler nötig.
Button submit = (Button) findViewById(R.id.button_login);
submit.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// do the magic
}
});
Über die Methode findViewById können Sie Elemente des Layouts, die Sie vorher im Layout-Editor anlegen müssen, auswählen und in eine Variable speichern. Durch diese Variable kann ein EventListener, dieser hier reagiert auf Klicks, hinzugefügt werden.
Jetzt ist es an der Zeit die App auch einmal „live“ auszuprobieren. Klicken Sie dazu auf den grünen Knopf oberhalb des Codes:
Nun sollte der Android-Emulator starten. Bitte haben Sie dazu ein wenig Geduld, denn gerade beim ersten Start kann dieser Vorgang einige Minuten dauern. Nach einiger Zeit sollte jedoch der Lockscreen eines Android-Smartphones erscheinen und zum Entsperren auffordern. Unter den Programmen sollte nun Ihre App auftauchen und sich testen lassen.
Wenn Ihre App fertig ist, oder Sie sie einfach einmal auf einem echten Gerät testen wollen, sollte sie in eine apk-Datei exportiert werden. Klicken Sie dazu mit der rechten Maustaste auf Ihr Projekt und wählen Sie Android Tools > Export Unsigned Application Package. Nun können Sie die Datei speichern und auf einem Gerät ausführen.
Wenn Ihre App beispielsweise auf das Internet zugreifen will, müssen Sie vorher die Rechte dazu anfordern, die zudem bei der Installation vom Benutzer bestätigt werden müssen. Dies erfolgt in der AndroidManifest-Datei im Tab Permissions. Für den Internetzugriff ist zum Beispiel der Uses Permission-Eintrag android.permission.INTERNET
erforderlich.