[Android] Pobranie nazw najbliższych miast do obecnej lokalizacji użytkownika

0

Mam problem ze znalezieniem nazw miast w podanej odległości od obecnej lokalizacji użytkownika. Obecnie pobieram szerokość i długość geograficzną z GPS o raz nazwę miasta w którym użytkownik obecnie się znajduje. Chodzi mi czy istnieje jakieś darmowe Api lub czy jest jakiś sposób aby te miasta odnaleźć?

0

Akceptujesz płatne usługi czy wolisz w pełni darmowe choć skomplikowane rozwiązanie?

0

Może lepszym wyborem będą API Googlowskie: https://developers.google.com/maps/documentation/geocoding/start?csw=1

0

tylko darmowe mnie interesują. Z tego co czytałem poprawcie mnie jesli się mylę. To ta akurat usuługa jest darmowa: http://geobytes.com/get-nearby-cities-api/

0

**loza_szydercow ** mozesz opisac?

0

Proof of concept - z Planet.osm ściąga ostatniego snapszota -> http://wiki.openstreetmap.org/wiki/Planet.osm W jakimś języku piszesz sobie parser by z tego bigosu wyciągnął ci listę miejscowości + koordynaty. Pakujesz to do bazy sqlitowej. Teraz w zależności od rozmiaru masz dwie drogi:

  • pakujesz bazę razem z apką (rozwiązanie kompletnie serverless)
  • Przygotowujesz sobie jakiegoś prostego RESTa żeby sobie ściągać wyniki on-demand. Tu ograniczają się obostrzenia hostingu
0

Google daje taką możliwość, użycie jest bardzo proste: https://developer.android.com/reference/android/location/Geocoder.html#getFromLocation(double, double, int)
Darmowe o ile wiem

0

@loza_szydercow: Ciekawa propozycja ale coś mi się wydaję że po wyciągnięciu miast i szerokości geograficznych z tego pliku tak czy siak będzie duży rozmiar pliku. A całą logikę chciałbym upchnąć w appce żeby nie obciążać niepotrzebnie serwera dodatkowymi obliczeniami. Natomiast tak duża apka raczej odstraszy potencjalnego użytkownika. Wydaje mi się że łatwiej będzie obsłużyć udostępniony serwis z geobytes. Przykład dla współrzędnych z Warszawy i wyszukanie miast w odległości 100km http://gd.geobytes.com/GetNearbyCities?callback=?&radius=100&Latitude=52.2740883&Longitude=20.9793506 Zwracany format jest dosyć czytelna i będzie łatwy w obróbce.

@Tokarz_ Czy ta metoda zwraca miasta w podanej odległości od podanych współrzędnych czy tylko adresy puntków (np: restuaracji itp) ? Bo mi zależy tylko na nazwach miast w danej odległości.

0

Z tego co widzę to spakowany snapszot to ~6GB. A tam jest w cholerę i trochę danych (siatki ulic, nazwy, nr domów, POI, etc.) więc nie zdziwiłoby mnie gdyby ten wycinek po spakowaniu zamknął się w 50 mega. Tak czy siak nic nie przeszkadza ci wystawić własnego RESTa :) Co do tego Geobytes to jesteś pewien że to darmowa usługa? Na stronie jakieś licencje sprzedają.

Co do gugle api jeśli tylko ominiesz wymaganie radius (getFromLocation nie ma takiego parametru) to możesz listę miast spróbować zrekonstruować za pomocą getLocality z encji Address. Ale to hack jest

0

@darksead: szczerze to nie wiem, musisz sprawdzić sam. O ile kojarzę, to chyba możesz ustawić jaki typ miejsca chcesz dostać - miasto, budynek, miejsce itd. Lub odsiać to, czego nie potrzebujesz już po wywołaniu metody

0
loza_szydercow napisał(a):

Z tego co widzę to spakowany snapszot to ~6GB. A tam jest w cholerę i trochę danych (siatki ulic, nazwy, nr domów, POI, etc.) więc nie zdziwiłoby mnie gdyby ten wycinek po spakowaniu zamknął się w 50 mega. Tak czy siak nic nie przeszkadza ci wystawić własnego RESTa :) Co do tego Geobytes to jesteś pewien że to darmowa usługa? Na stronie jakieś licencje sprzedają.

Co do gugle api jeśli tylko ominiesz wymaganie radius (getFromLocation nie ma takiego parametru) to możesz listę miast spróbować zrekonstruować za pomocą getLocality z encji Address. Ale to hack jest

Wydaje się że akurat ta metoda z geobytes jest darmowa (z limitem na ip ale ot nie problem) widnieje w zakładce free services :P

0

Jak zadecydowałeś to działaj, zawsze masz fallback solution :)

0

Upewniłem się kontaktując z nimi na facebooku i jest to darmowe api jeśli nie wymagamy połaczenia SSL. Będę tego potrzebował do znajdowania pobliskich miast od obecnej lokalizacji użytkownika aplikacji. Pytanie czy nie jest to jakieś niebezpieczne jeśli będę z aplikacji wysyłał zapytanie o te miasta wysyłając szerokosci i długosci geograficzne użytkownika bez SSL? W sumie tylko te dwie dane by leciały do ich serwera plus maks odległość, więc nawet jak ktoś je przechwyci to nic mu to nie da. Co o tym myślicie?

0

Odpowiedź politycznie poprawna: jeśli jakaś apka zdobyłaby popularność a srała by moimi koordynatami plain-textem po sieci to bym się mógł zdenerwować, zwłaszcza jeśli trafiło by to na niebezpiecznik i media zaczęłyby kręcić g**no aferę :)

Odpowiedź praktyka: widziałem i programowałem gorsze rzeczy w apkach od telekomów po banki. Who cares?

Wybór należy do ciebie :)

0

Widziałeś apki bankowe, które komunikują się z serwerami banku bez ssl? Które to, powiedz bo chcę wiedzieć które banki omijać

0
loza_szydercow napisał(a):

Z tego co widzę to spakowany snapszot to ~6GB. A tam jest w cholerę i trochę danych (siatki ulic, nazwy, nr domów, POI, etc.) więc nie zdziwiłoby mnie gdyby ten wycinek po spakowaniu zamknął się w 50 mega. Tak czy siak nic nie przeszkadza ci wystawić własnego RESTa :) Co do tego Geobytes to jesteś pewien że to darmowa usługa? Na stronie jakieś licencje sprzedają.

Co do gugle api jeśli tylko ominiesz wymaganie radius (getFromLocation nie ma takiego parametru) to możesz listę miast spróbować zrekonstruować za pomocą getLocality z encji Address. Ale to hack jest

Pobrałem plik osm.bz2 30,7GB po rozpakowaniu ma ponad 400GB. Czym to otworzyć i wyciągnąć dane? :D

0

Vim-em. Chociaż na twoim miejscu wyrzuciłbym dane do bazy danych na serwerze i zrobił odpowiednie api do tego żeby mobilka mogła odpytywać serwer

0
Biały Lew napisał(a):

Vim-em. Chociaż na twoim miejscu wyrzuciłbym dane do bazy danych na serwerze i zrobił odpowiednie api do tego żeby mobilka mogła odpytywać serwer

Tak właśnie chce zrobić, ale zależy mi tylko na danych Miasto, Latitude, Longitude. Wtedy na smartphone będzie obliczany zakres szerokości geograficznych i później będę odpytywał po rescie.

0

Ja na twoim miejscu poleciałbym jakimś awk cze sed-em. Powinien dać radę.

Ale zdaje się, że siedzisz na Windowsie, może ktoś inny coś poleci. Raczej każdy normalny edytor tekstu wymięknie.

0

o.O Byłem pewien że widziałem na tym wiki 6GB - ale chyba mi jedno zero umknęło :) W wersji normalnej to zwykłe XMLe są. Nawet PHPe da radę :)

BTW: Przy okazji znalazłem też to -> http://wiki.openstreetmap.org/wiki/Overpass_API Może to będzie lepsze dla twojego problemu.

0

Lepszy jest serwis Google

0
sikałem do chrzcielnicy napisał(a):

Lepszy jest serwis Google

Tylko że serwis google nie oferuje api z obliczeniem miast w jakieś odległości do danej lokalizacji, ani możliwości zapytań o miasta mając już obliczone zakres szerokości geograficznych

1 użytkowników online, w tym zalogowanych: 0, gości: 1