może ktoś mi powiedzieć, czy istnieje sposób, aby załadować plik kml do mapy google w systemie Android.Android: jak załadować KML
dzięki
może ktoś mi powiedzieć, czy istnieje sposób, aby załadować plik kml do mapy google w systemie Android.Android: jak załadować KML
dzięki
Proszę znaleźć tutaj przykładowy kod, który pobiera dane z Google KML i wciąga go na mapie:
użyłem plików GPX na mapie (Android 1.5), ale nie było nic, aby załadować plik KML lub GPX. Jeśli nie został dodany w nowszych wersjach Androida, domyślam się, że musisz sam przeczytać ten plik. To, co zrobiłem 10 miesięcy temu ...
Kilka miesięcy temu szukałem podobnej funkcji, ale nie mogłem znaleźć sposobu na załadowanie pliku z karty SD - lub nawet za pomocą dostawcy treści. Nie oglądałem się od tego czasu.
jednak jedna metoda Zauważyłem, które okazały się przydatne, jak byłem już komunikowania się z serwera WWW
getting maps to accept a dynamically generated KML file?
To pozwoliło mi wysyłają KML z mojej aplikacji na serwerze (Komunikowanie był już na miejscu), serwer przechowywane KML, przypisany losowy ciąg, i powrócił go do aplikacji, aplikacja następnie przekazywane link do serwera w stylu:
final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://website.com/kml_gen.php?id=1kj312"));
startActivity(myIntent);
serwer zwrócił Lista KML dla aplikacji mapy do użycia.
Aktualizacja po komentarzach poniżej:
final Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:0,0?q=http://code.google.com/apis/kml/documentation/KML_Samples.kml"));
startActivity(myIntent);
Spróbuj uruchomić powyższy kod - będzie można zobaczyć, kiedy go uruchomić, mapa aplikacja Google jest otwarty i będzie zwrócić się do pliku KML, w tym przypadku próbki pliku z google. Jest to mapa z nakładką, ale jest teraz aplikacją mapy google i nie jest już uruchamiana w aplikacji.
Aby to rozwiązanie trzeba było gdzieś przechowywać plik KML na serwerze sieciowym - ma to niewielki problem, ponieważ użytkownik potrzebuje połączenia danych (które mapa i tak by potrzebowała - ale jeśli plik kml jest duży i połączenie zwolnione może być opóźnienie).
Wspomniałeś, że masz serwer produkujący dynamiczne dane, a także pewne statyczne rzeczy. Jeśli statyczny materiał jest taki sam dla wszystkich i za każdym razem, gdy serwer produkuje jakieś dane, byłbym pokusiłby się, aby serwer WWW wyprodukował jeden dobrze sformatowany dokument KML zawierający oba zestawy danych - aplikację map Google, o ile wiem, że tylko załaduj jeden plik KML z serwera WWW.
Drugie rozwiązanie, z którego korzystałem, zostało zamieszczone powyżej - jeśli masz dane statyczne w telefonie (chciałbym użyć DB z danymi), utwórz nakładkę rysującą elementy, a także zażądaj dynamicznych wyników z serwera, dodaj je do niestandardowej nakładki. Ta opcja będzie oznaczać, że będziesz musiał kodować dowolną dodatkową funkcję, którą chcesz - tzn. Przeszukując mapę pod kątem lokalizacji, widoku satelitarnego ..... Upewnij się, że wykonujesz operację w osobnym wątku, a nie w wątku interfejsu użytkownika, szczególnie podczas budowania duże nakładki lub prawdopodobnie pojawi się okno dialogowe Wymuszanie zamykania/Czekaj.
@Scoobler ... dzięki za to. Więc jak mogę położyć ten plik kml na mapie google? –
@raqz co dokładnie masz na myśli?Czy masz plik kml, który chcesz nałożyć na mapę - czy masz zestaw współrzędnych i szukasz sposobu na pokazanie ich na mapie, np. Dynamicznie tworząc plik kml? – Scoobler
@Scoobler ... Mam plik kml, którego dane są stałe. Muszę wykreślić te geometrie w kml na mapie, tj; nakładki, które na mapie google. Mam również inny plik kml, który jest generowany dynamicznie na serwerze i muszę wyświetlać to samo na telefonie. więc struktura byłaby, najpierw mapa google, następny stały plik kml, a następnie na szczycie obu tych obiektów ... dynamicznie generowany kml. czy jest jakiś sposób. naprawdę doceniam twoją pomoc ... dziękuję –
@Mathias ... dziękuję bardzo! ale jeśli mogę cię zapytać. czy jest sposób na dostęp do kml z karty SD telefonu. kml, którego używam, nigdy się nie zmieni. więc nie ma sensu odbierać go z serwera za każdym razem, gdy włączasz aplikację. jeszcze raz dziękuję –
oczywiście, możesz umieścić go w pliku tekstowym i przeczytać go za pomocą zwykłych metod java.io.file –
, więc chcesz powiedzieć ... Muszę skopiować zawartość kml do pliku tekstowego i przeanalizować go za pomocą metody io .. (tokenizer i inne podobne rzeczy)? nie można przechowywać kml w telefonie i użyć parsera sax do przeanalizowania go? –