2011-12-13 8 views
7

Chcę utworzyć aplikację na Androida, która ładuje mapę, którą utworzyłem wewnątrz budynku. Chcę, żeby przekazywał wskazówki między pokojami. I między piętrami, jeśli to możliwe.Chcę utworzyć aplikację na Androida z mapą wskazującą drogę, ale nie Google Maps.

Chciałbym, aby mapa była powiększalna i klikalna. np. możesz kliknąć, gdzie jesteś i dokąd chcesz się udać, a aplikacja wskaże Ci drogę. LUB wpisujesz w polach tekstowych, w którym pokoju się znajdujesz i dokąd chcesz jechać, i ponownie podajesz wskazówki.

Udało mi się natknąć na coś, co pozwoliło ci użyć mapy otwartego źródła i dodać własne węzły do ​​każdego rogu lub miejsca odniesienia. Ale nie mogę znaleźć witryny po godzinie wyszukiwania przez Google.

Czy ktoś ma pojęcie, jak mogę to zrobić?

+3

jedno za nadzieje, że otrzymasz odpowiedź na to. ale uważam, że jest to ograniczenie sprzętowe. co oznacza, że ​​GPS naprawdę nie działa w drzwiach. tak mało robienia ręcznej triangulacji między wifi lub bluetooth jest niemożliwe. ale jak powiedziałem, mam nadzieję, że dostaniesz inną odpowiedź i to im źle. –

+2

http://jquerygeo.com/ – Andrew

+1

http://wiki.openstreetmap.org/wiki/Indoor_Mapping może uzyskać pomysły z tego miejsca. – Jasonw

Odpowiedz

2

Chociaż nie może być odpowiedź szukasz:

Zawsze można napisać aplikację, która to robi. Jeśli już jesteś gotowy na pozycjonowanie węzłów na mapie, możesz hipotetycznie napisać program, który używa (głównie używanego) algorytmu ścieżki gry, takiego jak A *, i obliczyć trasę z tego miejsca. Byłoby to trudne, ale pomyślałbym, że umieszczając węzły i mapując je wektorowo z kosztami związanymi z wektorami (może mierzonymi w stopach/metrach lub czymś podobnym), możesz ustawić to za pomocą A *. ..

Trudno powiedzieć. Próbowałem szybkiego Google'a i również wyszedłem pusty.

+0

Doceniam odpowiedź. Ale to jest projekt uczelni, w którym już od podstaw uczę się od podstaw języka Java, myślę, że to wystarczy, aby spróbować uczyć się teraz, bez konieczności uczenia się A *. Ale może to jednak pomóc. Dzięki jeszcze raz. Dam ci znać, jeśli w końcu to wykorzystam. –

1

Można utworzyć MapActivity które następnie mogą mieścić MapView (MapView nie mogą być osadzone w jakiejkolwiek innej działalności), który jest uczciwy do dobroci interaktywnej mapie, ale nie jest to dokładnie pełni funkcjonalny.

MapView służy głównie do wyświetlania mapy określonego obszaru z niestandardowymi nakładkami. Możesz ustawić ostrość mapy, poziom powiększenia, jeśli wyświetla dane o ruchu i kilka innych mniejszych opcji. Ale poza tym musiałbyś zbudować nakładkę na swoją trasę. I nie ma tu żadnej funkcji zwrotu po skręcie, ani niczego podobnego. Są po prostu "głupimi" nakładkami.

Google DID jednak ostatnio aktualizuje aplikację Mapy Google, aby zawierała mapy wewnętrzne &. Udostępniają witrynę, do której można przejść pod adres submit a floor plan budynku, dzięki czemu można ją dodać do oficjalnej aplikacji.

Po oficjalnie dodany Twój plan, można po prostu uruchomić oficjalną aplikację, aby zrobić swoją nawigację dla Ciebie przy użyciu Intent takiego:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345")); 
startActivity(intent); 
3

To jest jeden z nich przypadkach, gdy idea brzmi prosto, ale naprawdę nie jest. Jest wiele zadań, które musisz rozwiązać, o których już rozmawialiśmy.

1) Jak modelować biuro. Należy to zrobić, aby łatwo było modelować, ale plik jest mały. Musi być w formacie, który zrozumie twój algorytm odnajdywania ścieżek. Oznacza to, że podczas szukania ścieżki będziesz wprowadzał zmiany w danych.

2) Wyszukiwanie/wprowadzanie lokalizacji. Zrobione za pomocą sprzętu (GPS go nie wycina) lub użytkownik mówi, gdzie się znajdują. Można to zrobić za pomocą NFC i tagów umieszczonych w biurze, a nie idealnym rozwiązaniem, tagi muszą być widoczne.Użytkownik może wprowadzić swoją lokalizację, ale może stracić i nie wie, gdzie są.

3) W jaki sposób przedstawić dane, można napisać magiczną aplikację 3D pokazującą układ budynku niemożliwy do wykonania. To będzie sześć miesięcy pracy w nim! Pamiętaj, że twoja mapa jest trójwymiarowa, mapy dróg są zwykle dwuwymiarowe. (z niektórymi przelotami przelotowymi ...)

4) Śledzenie postępu. Aplikacja naprawdę musi wiedzieć, jak to robisz, jeśli zejdziesz z trasy, to powie Ci, aby wrócić. To znowu będzie trudne do osiągnięcia w pomieszczeniach. Śledzenie postępów jest jednym z obszarów, w którym PND (Personal Navigation Device) produkuje spędzają czas, ponieważ naprawdę wpływa na zaufanie użytkownika do oprogramowania.

Po pracy w TomTom wszystko, co mogę powiedzieć, że możesz być w tym od lat.

Czy jest to projekt kolażowy, czy mogę zaproponować prostszy projekt?

Zrób to z mapą 2D, prostą mapą opartą na siatce przypominającą klasyczną mysz w problemie z labiryntem. Wdrożenie A * w celu znalezienia ścieżki. Gdy to zrobisz, możesz wtedy, jeśli masz czas przedłużyć go o oryginalny plan.

Książka, którą znalazłem bardzo dobrze w przeszłości, to "Programowanie gry AI na przykład". ISBN 1-55622-078-2. Rozdział 8 dotyczy odnajdywania ścieżek i ma bardzo dobrą część na A *.

Powodzenia. :)

1

Miałem dokładnie ten sam problem podczas mojego projektu Masters. Jednak moje rozwiązanie nie jest kompletne, ale tak to zaplanowałem. W każdym razie nie mogłem go w pełni wdrożyć z powodu różnych ograniczeń. Może to brzmieć skomplikowanie, ale nie jestem pewien, jak to przekazać.

  1. Przechowuj mapy statycznie i dynamicznie nie - Chodzi mi o to, obrazki/zdjęcia pojawiały się, gdy ktoś chce przejść z jednego pomieszczenia do drugiego lub jednego piętra na drugie. Routing dynamiczny jest nieco trudny. Przygotuj zdjęcia przed ręką, aby się pojawiły.

  2. Opracuj algorytm najkrótszej ścieżki, podobnie jak algorytm Dijkstry. Dostaniesz gotowe programy java do wykonania tego algorytmu. Dzięki temu możesz uzyskać trasy. Gdy mapa jest dostępna, kliknięcie i dodanie opcji powiększania nie powinno stanowić większego problemu.

Jakoś połączyć oba kroki (przykro mi, nie ma tutaj kodu, ponieważ ja sam nie mogłem wymyślić). Jak powiedział Richard powyżej, miałem NFC w głowie, aby go wdrożyć (cały mój projekt był oparty na tym). NFC jest w zasadzie technologią RFID, a więc bezprzewodową. Możesz użyć 802.11 b/g/n do implementacji strony sieciowej. Jeśli potrzebujesz dodatkowej pomocy, daj mi znać. Pomoże jak długo mogę.

Wszystkiego najlepszego.

Powiązane problemy