Nowe programy do GPS i Open Street Maps [Java]

Od jakiegoś czasu interesuję się sprawą pisania oprogramowania do obsługi GPS oraz prezentujące mapy z OSM. Bardzo wartościową stroną okazuje się wtedy http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames. Na pierwszy ogień poszła aplikacja (robocza nazwa „yonaver” na GPLu2) w swej funkcjonalności podobna do tangoGPS, tylko obsługująca te mapy w trybie offline – jedziesz sobie z laptopem na siedzeniu i oglądasz sobie wygodnie na dużym ekranie okoliczny teren.
yonaver
Program jest działający, kilka rzeczy trzeba jeszcze poprawić aby był do normalnego użytku. Zbliża się do swojej pierwszej wersji Alfa. Napisany jest w Javie SE, jako IDE użyte to Netbeans 6.5. Kod leży na http://code.google.com/p/yonaver/source/checkout

Kolega zwrócił mi uwagę, że lepiej tego typu aplikację pisać na urządzenia, które cały czas nosimy przy sobie i które jest cały czas włączone. Tym sposobem zacząłem pisać aplikację dla Java Micro Edition, czyli dla komórek. Powstaje ona jako rozwinięcie programu GPS Track (na GPLu2). Dodaję w nim obsługę map pobieranych z OpenStreetMap i również w tym przypadku nie będzie potrzebne stałe połączenie z Internetem. Tej aplikacji jeszcze nie uruchamiałem na rzeczywistym urządzeniu, ale postępy są. Aplikacja pokazuję mapę i aktualną pozycję GPS. Program jest tworzony w Netbeans 6.7, repo można znaleźć na http://kenai.com/projects/gpstrack/sources
GPSTrak+
Program wymaga urządzenia zgodnego z CLDC-1.0, MIDP-2.0, obsługującego JSR-82 (bluetooth) i JSR-75 (filesystem).
Jesteś chętna/chętny do współpracy? 🙂

Przy okazji wyszła pewna dziwna cecha biblioteki, której używam do obsługi liczb typu rzeczywistego Real – zrobienie podstawienia:
Real a = new Real("1");
Real b = null;
b = a;

Powoduje podstawienie za zmienną b nie wartości zmiennej a, ale referencji do tejże. To skutkuje tym, że gdy a zmienia się to również zmienia się b, na taką samą wartość. Jednym z rozwiązań może być coś takiego:
Real b = new Real("0");
b.add(a);

Wtedy rzeczywiście podstawiana jest wartość, a zmienne żyją oddzielnym życiem.

5 Replies to “Nowe programy do GPS i Open Street Maps [Java]”

  1. Stanisław S. says: Odpowiedz

    Przemku,

    kwestia podstawienia wartości obiektu Real to cecha języka, a nie biblioteki. Liczba Real jest obiektem, a zmienna ‚b’ zawsze będzie tylko referencją, bo w javie generalnie zmienne przekazywane są przez referencje. Alternatywą jest użycie w podstawieniu metody Object.clone() i zduplikowanie obiektu wraz ze wszystkimi atrybutami. Wtedy oczywiście ‚b’ wciąż będzie referencją, ale do zupełnie nowego obiektu. Można powiedzieć, że uzyskałeś ten sam efekt tworząc zupełnie nowy obiekt, ale gdyby atrybutów było więcej niż tylko wartość liczby Real znacznie łatwiej byłoby po prostu użyć metody Object.clone().

    Podstawienie b=a miałoby sens gdyby zmienna była typem prymitywnym, w innym wypadku albo traciłbyś kontrolę nad zasobami (samoduplikujące się obiekty), albo nad zawartością obiektów (bo przecież obiekt może mieć więcej niż jeden atrybut).

    mam nadzieję, że w/w się przyda w przyszłości

    pozdrawiam
    S.

  2. Bardzo przyda się! No fakt, nie zastanowiłem się nad tym głębiej 🙂

    Stanisław witaj w moich skromnych progach 😉

  3. […] z tym co napisałem kilka miesięcy temu, stworzyłem kod programu na komórki do obsługi map i odbiornika GPS. Podstawowe […]

  4. Witaj Przemku!
    Chcialem Cie podpytac o kilka rad dotyczacych stworzenia aplikacji w ME wspolpracujacej z gps’em i pokazujacej pozycje na mapie. czego i w jaki sposob uzyc? jesli chodzi o mape, to potrzebuje zrobic to na poczatek na malym fragmencie mapy bez skalowania (zoom’u), potrzebuje rowniez wyswietlac pozycje aktualna oraz pewne markery, jak w googlemaps oznaczajace miejsca. rozumiem ze taka mape musze sobie skalibrowac najpierw pod wspolrzedne? przeczytalem rowniez o problemach z dostepem do systemow plikow w nowych komorkach, zastanawiam sie, czy dla mnie to bedzie konieczne (aktualna pozycje chcialbym wyslac na serwer: ale to juz zupelnie inna bajka).
    Bede wdzieczny za jakiekolwiek wskazowki, pozdrawiam, dawid

  5. Podstawowe pytanie brzmi na jakiej mapie chcesz oprzeć swoją aplikację – jeśli na OSM to duży kawał kodu już masz gotowy w GPSTracku i GPSTracku+. Drugie ważne pytanie to jest takie czy aplikacja ma pracować w permanentnym połączeniu z internetem – jeśli nie to praca z plikami na systemie plikowym lokalnym to rzecz niezbędna.

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.