2013-04-30 12 views
19

Szukam rozwiązania, które pozwoli na wykorzystanie danych OpenStreetMap do renderowania mapy 2D opartej na wektorze 2D w systemie iOS, zamiast renderowane płytki z serwera. Podobne do Apple i Google Maps w iOS6 +.Renderowanie oparte na wektorze OSM w czasie rzeczywistym w systemie iOS (przy użyciu OpenGL ES)

Przeprowadziłem obszerne badania w tej sprawie, ale nie znalazłem zbyt wielu informacji.
Jest wiele aplikacji na iOS, które to robią, ale nie mają informacji o tym, jak je zaimplementować. Kilka z tych aplikacji to:

Pierwsze 2 aplikacje działają podobnie jak Apple i Google Maps. Mapa jest rysowana w czasie rzeczywistym za każdym razem, gdy zmienia się zoom.
Ten ostatni wydaje się być nieco inny. Reprezentuje dane wektorowe na określonych poziomach powiększenia i tworzy płytki, które są następnie używane jako normalne kafelki pobrane z serwera kafelkowego. Tak więc silnik renderujący może faktycznie być źródłem płytek dla biblioteki Route-Me, ale zamiast pobierać płytki, renderuje je w locie.

Pierwsza metoda jest preferowana.

[Q] Sądzę, że można było przełączać się między metodami dość łatwo, po uruchomieniu renderera OpenGL ES. Chodzi mi o to, że możesz użyć renderera jako źródła dla Route-Me do tworzenia płytek, lub możesz użyć go jako szuflady w czasie rzeczywistym, podobnej do gry. Czy mam rację?

Najbliższe znalezione rozwiązanie to OpenStreetPad. Jednak używa Core Graphics zamiast OpenGL ES, więc renderowanie nie jest przyspieszane sprzętowo.

Mapbox stwierdził, że pracuje nad kaflami wektorowymi i prawdopodobnie zapewnią one rozwiązanie dla systemu iOS, ale może używać Mapnika, więc nie jestem pewien, jak będzie to skuteczne. I nie ma ETA od połowy 2013 roku.

[Q] Czy znasz jakieś inne biblioteki, artykuły, przewodniki, przykłady lub inne przydatne informacje, jak się do tego podejść? Zasadniczo, jak obsługiwać dane OSM i jak faktycznie korzystać z OpenGL ES/GLKit, aby narysować te dane na urządzeniu. Może niektóre osoby, które to zrobiły, mogą podzielić się kilkoma rzeczami?

+0

Hej @ Calin, zastanawiałem się, które rozwiązanie w końcu wybrałeś? Nadal jestem w fazie badań, ale jestem nieco zdezorientowany. – manar

+0

@manar Nie mogłem znaleźć żadnego dobrego rozwiązania, jeśli chodzi o implementację. Jeśli chodzi o efekt końcowy, aplikacja ForeverMap 2 jest najbliższa temu, czego potrzebuję, głównie dlatego, że ma w pełni wektorowy silnik renderujący, taki jak Google czy Apple Maps. Biorąc pod uwagę to wszystko, myślę, że moim najlepszym pomysłem jest napisanie silnika renderującego od podstaw, z wykorzystaniem technologii Apple. Jak dotąd wygląda to na trudne zadanie, a każda pomoc jest wciąż doceniana. Mam nadzieję, że to pytanie dostarczy w końcu kilka pomocnych odpowiedzi, aby trochę ułatwić. – Calin

+0

dzięki za odpowiedź, powinieneś rzucić okiem na Mapnika, to nie jest zastrzeżona;) ale implementacja wydaje się trudna. – manar

Odpowiedz

1

Istnieje lista OSM-based applications for iOS. Zawiera również kilka projektów open source, na przykład Navit. Navit wydaje się renderować mapę za pomocą SDL/OpenGL. Aby uzyskać więcej informacji, patrz Navit iOS wiki page.

+0

Interesujące ... Niestety, aplikacja Navit jest jedyną aplikacją open source na tej stronie i jest to aplikacja wieloplatformowa, co oczywiście dobrze, ale jestem bardziej zainteresowany technologią iOS-only, aby móc skorzystać z niektóre bardzo fajne środowiska iOS, takie jak GLKit. Warto jednak zbadać sprawę. Dzięki – Calin

+0

Zgaduję, że kiedy już odkryłeś, jak odzyskać/przetworzyć surowe dane OSM, nie ma nic szczególnego w renderowaniu dróg OSM przy użyciu GLKit w porównaniu do renderowania czegoś innego przy użyciu GLKit. – scai

2

Technologia, która zasilała ForeverMap 2 i obecną aplikację GPS Nav & do skobblera, jest teraz dostępna za opłatą. Zobacz ich developer platform. Uwaga: mają również darmowy poziom, za pomocą którego można tworzyć i uruchamiać małe aplikacje.

Wyrenderują mapę za pomocą OpenGL i "płytek danych wektorowych". Te kafelki danych wektorowych zawierają informacje dotyczące geometrii drogi (dzięki czemu możesz mieć routing), dane POI & inne funkcje mapy. (np. limity graniczne).

+0

To nie jest open source i wymaga klucza API od nich. Nie tego szukam. – Calin

Powiązane problemy