Giter Site home page Giter Site logo

opensqueakmap's Introduction

OpenSqueakMap Build Status

An OpenStreetMap browser for Smalltalk (Squeak)

Running OpenSqueakMap

  1. Make sure you have metacello-work installed.

  2. Load the project by running the following in your workspace:

    Metacello new
      baseline: 'OpenSqueakMap';
      repository: 'github://hpi-swa-teaching/OpenSqueakMap:master/packages';
      onConflict: [:ex | ex allow];
      load
  3. To display a coordinate on the map, run the following in your workspace:

    OpenSqueakMap open: longitude@latitude

Coordinates are to be passed as decimal numbers. For example, if you want to look at the coordinate 8°30'N 13°00'W, run:

OpenSqueakMap open: -13@8.5 "West and south coordinates become negative"

You can pass an optional zoom level. A zoom level of 0 will show you the entire world, 20 will show you a single building.

OpenSqueakMap open: -13@8.5 at: 16

The default zoom level is 17. OpenSqueakMap currently does not perform too well on lower levels due to the high amount of data that needs to be downloaded.

Configuration

TODO documentation, check back soon!

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details

opensqueakmap's People

Contributors

birneamstiel avatar blaidd-drwg avatar ekrebs5 avatar fniephaus avatar mastercarl avatar pawelboe avatar tom95 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opensqueakmap's Issues

[8h] Anzeige von Straßennamen auf der Karte ermöglichen

Was?

Als Nutzer möchte ich auf der Karte Straßennamen sehen.

Akzeptanzkriterien

  • Neben den Positionsangaben von Straßen werden auch deren Namen heruntergeladen.
  • Die Straßennamen werden an den zugehörigen Straßen angezeigt.

Einschränkungen

  • Die Straßennamen werden nicht gedreht oder gestaucht, um „in“ den Straßen zu liegen.

[13h] Falsche Kartenprojektion korrigieren

Was?

Als Nutzer, der Wert auf eine korrekte Darstellung legt, möchte ich die Kartendaten unverzerrt in einer vernünftigen Projektion angezeigt bekommen.

Akzeptanzkriterien

  • Die bisherige gescherte Darstellung von Kartenobjekten wird durch eine korrekte, unverzerrte Darstellung ersetzt.
  • Insbesondere werden rechteckige Gebäude nicht mehr als Parallelogramme dargestellt.

Parsing von Relations reparieren

Was?

Als Nutzer möchte ich, dass die Karte auch Elemente vom Typ „Relation“ zeigt. Dazu gehören beispielsweise Waldstücke, die vom Typ relation sind und den Tag landuse=forest besitzen.

Akzeptanzkriterien

Einschränkungen

Marker vor den RenderObjects und Straßennamen anzeigen

Was?

Als Nutzer möchte ich das gesetzte Marker und ihre Beschreibung vor Straßennamen und RenderObjects angezeigt werden. In diesem Zuge soll auch die Schriftgröße geändert werden.

Akzeptanzkriterien

Einschränkungen

Laden von Chunks im Hintergrund ermöglichen

Was?

Als Nutzer möchte ich vom Nachladen neuer Chunks beim Scrollen und Zoomen nicht blockiert werden. Als Nutzer möchte ich außerdem, dass Chunks generell im Hintergrund geladen werden.

Akzeptanzkriterien

Einschränkungen

[1h] Streetmorphs löschen, bei Zoomstufen wechsel

Aktuell werden Streetmorphs bei jedem Zoomstufenwechsel neu gezeichnet, überlappen sozusagen die alten und werden nicht gelöscht
Daraus folgt auch: Straßennamen in hoher Zoomstufe werden beim raussuchen nach dem erstmaligen rendern nicht wieder gelöscht

ToDo:

  • alle aktuellen Streetmorphs tracken und beim Zoomstufenwechsel löschen
  • in neuer Zoomstufe werden dann alle nötigen Morphs neu gezeichnet

Installationsanweisungen korrigieren und präzisieren (in Bezug auf Git Browser)

Was?

Als Entwickler möchte ich ohne die Verwendung von Metacello nur mithilfe von Squeaks Git Browser das Projekt clonen können.

Akzeptanzkriterien

  • Das Projekt ist in seiner Dateistruktur so angepasst, dass es ohne weitere Dependencies mittels des im Squeak-Image eingebauten Git Browsers in einer lauffähigen Version gecloned werden kann.
  • Die Readme des GitHub-Repositories ist entsprechend angepasst.

Einschränkungen

[1h] Nacharbeit: Markieren und Speichern von Orten ermöglichen

Was?

Als Nutzer, der die Karte mehrmals verwendet, möchte ich wichtige Orte markieren und beschriften können.

Akzeptanzkriterien

  • Nutzer sind in der Lage, eine Position auf der Karte mit einem grafischen Marker zu versehen und diesen Marker zu beschriften.
  • Gesetzte Marker werden gespeichert und somit über mehrere Sitzungen hinweg persistent angezeigt.
  • Nutzer sind in die Lage, gesetzte Marker wieder zu entfernen.

[5h] Anzeigen von Straßennamen entlang der Straße ermöglichen

Was?

Als detailverliebter Nutzer möchte ich die Straßennamen entlang der Straße angezeigt bekommen.

Akzeptanzkriterien

  • Im Gegensatz zur in #19 erfolgten Umsetzung sollen die Straßennamen gedreht und/oder gestaucht werden, um entlang von Straßen angezeigt zu werden.

Einschränkungen

[8h] Panning per Drag-and-Drop ermöglichen

Was?

Als Nutzer, der moderne Interfaces gewohnt ist, möchte ich das Sicht-Fenster mit der Maus bewegen können.

Akzeptanzkriterien

  • Nutzer sind in der Lage, mittels Drag-and-Drop den Kartenausschnitt zu verschieben (ähnlich zu bspw. Google Maps).
  • Das Verschieben geschieht stufenlos.
  • Beim Verschieben werden Kacheln mithilfe der bestehenden Methoden nachgeladen.

Einschränkungen

  • Das Nachladen von Kacheln wird nicht angepasst.

Protokoll Tutortreffen 04.05.

Termine

  • Vortrag: 06.07.2017
  • Konsultation: 26.06.2017

Organisatorisches

  • Betreuerin ist gleichzeitig Betreuer und Kunde (nimmt User Stories ab)
  • anfangs einwöchige Treffen, später auch zweiwöchig möglich
  • Trello-Board von der Vorgänger-Gruppe wird uns von Betreuerin geschickt
  • Der Lehrstuhl fügt uns zum (evtl. geforkten) GitHub-Repo hinzu
    • falls das bis 05.05. nicht passiert ist: noch mal melden!

Begrifflichkeiten (User Stories, Praktiken)

  • User Stories
    • legen wir selbst an und schätzen sie auch selbst (mit Punkten/Planning Poker/Keksen/…)
    • Kunde vergibt ebenfalls Punkte (z. B. 30) auf die User Stories nach Prioritäten
    • sollten permanent sein (z. B. GitHub Issues oder Trello-Karten)
    • gern auch auf Karten ausdrucken/aufschreiben und mitbringen
    • Akzeptanzkriterien und Anforderungen klar beschreiben
    • z. B. „As a Teacher I want to …“
    • wichtig: Dass man es versteht und es sinnvoll ist
  • Praxis „Simple Design“ + eine weitere selbst auswählen! (es können beliebig viele ausgewählt werden)
    • z. B. Planning Poker

Inhalt der Präsentation

  • Wie wurden Praktiken angewandt?
  • Was haben wir geschaffen?
  • Wie haben sich die Praktiken auf unseren Prozess ausgewirkt?
  • optimal: Feststellen, dass die Praktiken sinnvoll waren

Thema Ladezeiten

  • momentan sind Ladezeiten sehr hoch, weil immer alle Kartendaten geladen werden
  • besser wäre es, wenn man z. B. nur Flüsse oder nur Wege laden können

Erste Woche (bis zum nächsten Treffen)

  • mit Legacy Code auseinandersetzen (versuchen, Code zum Laufen zu bringen)
  • evtl. bestehende User Stories/Issues anschauen
  • eine weitere Praxis auswählen (neben Simple Design) – kann Unterpraxis von XP, aber auch sowas wie TTD sein
  • erste User Stories (Welche Features hätten wir gern?) erstellen
    • im Optimalfall genug User Stories, um einen Sprint (eine Woche) damit mit Arbeit füllen zu können
  • neue User Stories schätzen (z. B. mittels Planning Poker/Bucket Estimation/Affinity Estimation)

Manche RenderObjects verschwinden beim Laden neuer Chunks kurz

Was?

Als Nutzer möchte ich während Laden neuer Chunks nicht auf Informationen der Karte verzichten müssen, d.h. alle Objekte auf der Karte stetig sehen. Durch kurzes Verschwinden einzelner Objekte beim Download-Vorgang ist dies nicht gewährleistet.

Ideen

  • das Verschwinden mancher Objekte könnte an der Überlappung von Objekten mit mehreren Chunks liegen

Akzeptanzkriterien

Einschränkungen

Anzeigen von Routen ermöglichen

Was?

Als fahrradfahrender Nutzer möchte ich in der Lage sein, Routen von einem Ort zu einem anderen Orten angezeigt zu bekommen.

Akzeptanzkriterien

Einschränkungen

  • Es geht nicht um die Routenberechnung auf Client-Seite, sonder um das Laden und Anzeigen einer von einer Fremd-API berechneten Route.

[8h] Nacharbeit: Caching ermöglichen

Was?

Als Nutzer möchte ich, dass ein- und derselbe Ort beim erneuten Öffnen nicht jedes Mal neu geladen werden muss.

Akzeptanzkriterien

  • Caching soll definitiv innerhalb einer Squeak-Session ermöglicht werden
  • Caching muss nicht zwangsläufig so implementiert werden, dass nach dem Schließen des Images Chunks zwischengespeichert bleiben

Einschränkungen

[5h] Anzeigen eines Ortes durch Adresseingabe ermöglichen

Was?

Als Nutzer, der die Koordinaten eines Ortes nicht kennt, möchte ich den Ort über die Eingabe einer Adresse (Straße und Ort) anzeigen lassen.

Akzeptanzkriterien

  • Die Klasse OpenSqueakMap stellt eine Methode bereit, mit der durch Eingabe einer Adresse diese auf der Karte angezeigt werden kann.

Einschränkungen

  • Es steht zunächst keine grafische Oberfläche für die Eingabe der Adresse bereit. Diese Funktionalität wird eventuell in einer Folge-Story behandelt.

Fehlschlagende Chunk-Downloads behandeln

Was?

Als Nutzer möchte ich bspw. bei nicht vorhandener oder sehr schwacher Internetverbindung, dass das Herunterladen nicht endlos oft versucht wird.

Ideen

  • Nach gewisser Anzahl an Versuchen abbrechen
  • Nach gewisser Zeit abbrechen

Anstatt einfach abzubrechen, könnte dem Nutzer ggf. auch eine entsprechende Meldung mit Möglichkeit zum erneuten Versuchen des Downloads angezeigt werden.

Akzeptanzkriterien

Einschränkungen

[8h] Nacharbeit: Verändern der RenderConfiguration per GUI ermöglichen

Was?

Als Nutzer möchte ich – ohne Code schreiben zu müssen – die Darstellung der Karte verändern.

Akzeptanzkriterien

  • Es existiert eine grafische Benutzeroberfläche (GUI), mit der die in der Standard-Renderkonfiguration hinterlegten Darstellungsoptionen getrennt nach Kartenobjekt-Typ (z. B. Gebäude) konfigurierbar sind.

[3h] Wechseln zwischen zwei Render-Konfigurationen per Button ermöglichen

Was?

Als Nutzer möchte ich in der Lage sein, mit einem Button zwischen zwei Render-Konfigurationen (z. B. Darstellung mit/ohne Gebäude) zu wechseln.

Akzeptanzkriterien

  • Es existieren zwei Render-Konfigurationen, die sich deutlich voneinander unterscheiden.
  • Für das Umschalten zwischen diesen beiden Konfigurationen steht ein Button in Form der bestehenden Buttons zum Verschieben des Kartenausschnitts bereit.

Einschränkungen

  • Es besteht nicht die Möglichkeit, die Render-Konfigurationen mittels einer GUI anzupassen.
  • Das Wechseln zwischen mehr als zwei Render-Konfigurationen wird nicht ermöglicht.

Nur angezeigte Chunks bewegen/rendern

Was?

Als Nutzer möchte ich, dass nur die sichtbaren Chunks, also die sich im Viewport befindlichen Chunks, gerendert und bewegt werden.

Akzeptanzkriterien

Einschränkungen

To Do bis Do 11.05.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.