2013-03-27 6 views
6

Pracuję nad projektem dla uczelni i mam duże problemy z jego częścią.Jak przechowywać dane lokalnie openstreetmap na iPhonie

Krótko mówiąc, szukam wykonać następujące 5 rzeczy:

  1. pobrać otwarte dane ulic mojego miasta

  2. sklep, który dane lokalnie na twardym dysku telefonu.

  3. pogląd, że dane w mojej aplikacji iOS jako mapa

  4. miejsce znaczniki na mapie.

  5. narysuj ścieżki wzdłuż dróg między tymi ścieżkami.

Pracuję nad tą szczególną częścią projektu przez kilka tygodni i nie mam z tym problemu. Nie byłem nawet w stanie dowiedzieć się, jak przechowywać mapę w telefonie, nie mówiąc już o wyświetlaniu danych mapy. Próbowałem używać biblioteki "Route-Me", ale nie mogę jej uruchomić (chociaż wydaje się, że jest to jedna z najlepszych bibliotek do korzystania z danych openstreetmap, dlatego chcę się nauczyć, jak z niej korzystać). Czuję się całkiem cholernie pokonany.

Jeśli ktoś wykonał którekolwiek z zadań, które próbuję wykonać, mógłbyś połączyć mnie z samouczkami/przewodnikami/filmami, z których korzystałeś.

Nie szukam ludzi, którzy dadzą mi kod lub wykonają za mnie pracę, chcę się nauczyć, jak to zrobić, ale jeśli ktoś może wskazać mi właściwy kierunek dla stron, które mogłem nauczyć się, być bardzo wdzięczny.

Wszelkie porady lub komentarz będzie bardzo cenione

Odpowiedz

5

Oto jak doszło do rozwiązania problemu.

Ponieważ Tilemill nie czyta natywnie plików .osm/.o5m/.pbf, użyłem Osmozy do przekonwertowania pliku .osm na pliki .shp.

Następnie utworzyłem nowy projekt w Tilemill i dodałem konkretne pliki .shp, które chciałem jako warstwy do nowego projektu. Wymaga to trochę czasu, aby mapa wyglądała tak, jak chcesz, ale jest bardzo podobna do css i całkiem łatwa do odbioru.

Gdy już znalazłem mapę tak, jak chciałem, wyeksportowałem ją jako plik .mbtiles. Zajmuje to dużo czasu, a pliki mogą być bardzo duże w zależności od tego, jak szczegółowe są kafelki.Zrobiłem jedną mapę Irlandii z poziomami powiększenia między 7-14 włącznie i zrobiłem jedną mapę tylko Dublin City z poziomami powiększenia 11-17 włącznie. Mimo że na mapie tylko w Dublinie było znacznie mniej płytek, oba miały rozmiar około 200 MB.

Potem uznał ten poradnik, który wyjaśnia, jak zapisać plik .mbtiles w was aplikacji i jak ją czytać: http://martinsikora.com/creating-mbtiles-db-for-ios-mapbox-from-hi-res-map-image

Oto kilka innych linki, które znalazłem przydatne:

http://www.kindle-maps.com/blog/using-tilemill-with-openstreetmap-data.html

http://mapbox.com/developers/mbtiles/

http://mapbox.com/mapbox-ios-sdk/api/

http://mapbox.com/developers/api/#static_api

http://support.mapbox.com/discussions

Mam nadzieję, że jest to przydatne do kogoś

+0

Co zrobiłeś, aby zmniejszyć rozmiar pliku .mbtiles? Pytam, ponieważ moja jest o wiele za duża i mogę ją zaimportować na moją aplikację. – arniotaki

+0

Zmniejszyłem liczbę warstw, których używałem dla jednego. Zmieniłem typ obrazu na png8 (lub cokolwiek mniejszego) i dostosowałem mapę, usuwając rzeczy, których nie potrzebowałem, wciąż było około 70-80 MB – Ian

4

ja proponuję spróbować MapBox iOS SDK. To jest faktycznie rozwidlone z biblioteki Route-Me i pozwoli ci osiągnąć wszystko na twojej liście.

Kluczowym punktem do zapamiętania jest to, że masz kolejny krok pomiędzy pobieraniem danych OSM i przechowywaniem go lokalnie na urządzeniu z systemem iOS, czyli generowaniem kafelków mapy i przechowywaniem ich w jakiejś bazie danych.

Here to przykład aplikacji na iOS korzystającej z zestawu MapBox SDK, który ma zarówno źródła mapy online, jak i offline i jest dobrym miejscem do rozpoczęcia.

+0

Dziękuję bardzo za odpowiedź, będę patrzeć na to od razu! – Ian