2013-02-14 7 views
5

widzę pewne sposoby, aby to zrobić: Najlepszy sposób, aby stworzyć mapę niestandardowe budynku dla iOS

1) Narysuj używając OpenGL programowo.

2) Narysuj programowo za pomocą QuartzCore i CoreAnimation.

3) Narysuj mapę w AutoCadzie, a następnie jakoś połącz ją z iOS.

4) Narysuj mapę za pomocą SVG.

Wymogi wspierają odnajdywanie ścieżek i nawigację GPS.

Na pierwsze 2 sposoby uważam, że jest drogi pod względem wydajności, przerysować wszystkie elementy skalowania; i nie sądzę, że w ten sposób może mieć wsparcie nawigacji GPS.

Korzystanie z AutoCad przedstawionych map jest dla mnie trudne do zrozumienia dla mnie, jak połączyć je z \ ścieżkami wykresów do śledzenia ścieżki.

Moi koledzy opracują tę aplikację w Internecie przy użyciu SVG. Znalazłem go - https://github.com/SVGKit/SVGKit, ale wciąż nie mam pojęcia, jak to będzie obsługiwać odnajdywanie ścieżek i nawigację.

Byłbym wdzięczny za każdą pomoc.

Odpowiedz

4

Generalnie istnieją dwa typy aplikacji mapy:

A) wykazują one mapy, (z lub bez pozycji użytkownika) bez konieczności obliczania ścieżki jak system nawigacji ma (patrz punkt B)

B) Aplikacja wykorzystująca wektory mapy i obliczająca coś: np. Aby znaleźć najlepszą ścieżkę. Najkrótsze połączenie, np. System nawigacji, itp.

Aplikacja dla A) jest zwykle mniej skomplikowana niż B), ponieważ wektory mogą być nieco nieścisłe, nie mają połączeń, mają małe szczeliny, nie mają żadnej logiki między krawędzie itp.

1) Aby wyświetlić tylko mapę budynku, potrzebna jest tylko lista krawędzi. (Krawędź to para współrzędnych (x1, y1) - (x2, y2), jakkolwiek ją otrzymasz, np. MapInfo Professional format mif/mid.
A nawet Ty możesz wyświetlić plik pdf zawierający mapę builingu. Prawo z wbudowanym widokiem PDF, (także z SVG, ale trudniejszym)

Rzeczy stają się znacznie bardziej skomplikowane, jeśli nie jest to mapa względna, ale także mapa ustawiona za pomocą układu współrzędnych odniesienia, np. Szerokość geograficzna/długość geograficzna (WGS84)
W takim przypadku należy użyć narzędzia (mapInfoProfessional, do importowania plików AutoCad DXF i zastosować 3 punkty odniesienia pomiaru GPS w rogu domu i przekonwertować je na układ współrzędnych LatLong WGS84
Z ios nie można zmierzyć tego 3 P oints, ponieważ nie można uśrednić pozycji, ios przestaje wysyłać, gdy stoisz nieruchomo w jednym z rogów domu. Możesz spróbować wyodrębnić pozycje z zdjęcia Ziemi Ziemi google, jeśli mieszkasz w regionie, w którym zdjęcia google Sattelite mają wysoką rozdzielczość. (Może to jednak naruszać warunki licencji tego dostawcy satelity Foto (temat: dane pochodne))

W końcu masz teraz listę krawędzi w układzie współrzędnych Lat Lon.

Do wyświetlania Ja osobiście albo z 1) OpenGL) lub 2) Quartz2D.

Teraz część znalezienia ścieżki.

Prawdopodobnie potrzebujesz drugiej "mapy", która definiuje możliwe ścieżki wewnątrz budynku. Ta struktura musi być grafem połączenia (punkty z podłączonymi sąsiadami). Gry komputerowe tak to robią. (Niektóre pozwalają nawet wyświetlić ścieżkę w trybie wywoływania)

Ścieżkę można narysować, w innej warstwie planu piętra. Ale ta ścieżka ma wyższe wymagania: Żadne przerwy nie są dozwolone, wszystkie muszą być perfekcyjnie połączone.

Wywołanie tej warstwy "Ścieżka" i wyeksportowanie jej jako własnego planu.
Teraz używaj tylko tej warstwy ścieżki i importuj, a następnie twórz wykres węzłów z połączeniami sąsiadującymi.

Użyj Dijkstra Algo, aby wyszukać najkrótszą ścieżkę.

+0

Dzięki za szczegółową odpowiedź! Tak więc, jak rozumiem, muszę zrobić mapę AutoCad, przekonwertować ją za pomocą mapInfoProfessional na coś, co obsługuje system współrzędnych LatLong, a następnie narysować go za pomocą OpenGL/Quartz2D? Nadal nie mogę zrozumieć, jak sprawić, by mapa ta wchodziła w interakcję z iOS, po prostu narysuj ją w pewnym widoku? Lub dowolny określony składnik? A system współrzędnych LatLong musi być zastosowany dokładnie do mapy AutoCad lub do już narysowanej mapy w systemie iOS? – Aft3rmath

+0

tak, po prostu narysuj w widoku, CGRectlineTo. konwersja mapy na LAtLong może również zostać wykonana przez ciebie, używając Transformacji Helmerta. podczas rysowania mapy musisz również przekonwertować z powrotem latLong na współrzędne ekranu (używając rzutowania walca) – AlexWien

+0

Dziękuję bardzo! Ale co ze skalowaniem? Czy mogę tworzyć mapy rozdzielczości dla każdego kroku skalowania, a następnie rysować fragment mapy na skali, korzystając z innej mapy automatycznego kadrowania rozdzielczości? – Aft3rmath

Powiązane problemy