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ę.
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
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
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