Mapa Google w aplikacji.

Jedną z funkcji mojej aplikacji będzie wyświetlanie lokalizacji znajomych na mapie. W tym poście przedstawię Ci proces tworzenia tego modułu.

pexels-photo-269633

Widok mapy

Większość potrzebnego nam kodu możemy wygenerować poprzez stworzenie Google Maps Activity. Na początku musimy w pliku google_maps_api.xml uzupełnić Api Key, którego należy zdobyć na stronie https://console.cloud.google.com odpowiedni dla projektu, bądź jak to było w moim przypadku przekopiować z komentarza wyżej wspomnianego pliku link, który od razu przeniesie nas do odpowiedniej strony. Klucz wystarczy skopiować i wkleić między znaczniki string.

W pliku activity_maps.xml nie musimy nic dodawać, ani zmieniać ponieważ wszystko generowane będzie w klasie.

Klasa MapsActivity

W tej klasie zostaną przygotowanie wszystkie dane oraz stworzymy na ich podstawie odpowiednie markery. Na razie w miejscu danych znajomego podstawiam swoje dane. W późniejszej fazie rozwoju aplikacji te dane będę pobierał z jakiegoś web service. Podstawiane są dane aktualnej lokalizacji wygenerowane przez klasę LocationTracker.

Cała magia map Google w aplikacjach dzieje się przez klasę GoogleMap. Na obiekcie tej klasy wywoływane są metody addMarker służący do dodawania oznaczenia danej pozycji. Dla markera oznaczającego obecną lokalizację użytkownika zmieniłem kolor na taki żółty. Pozwala to się skupić bardziej na czerwonym markerze znajomego.

Na klasie GoogleMap wywoływane są też metody sterujące kamerą. Moja implementacja najpierw środkuje mapę do aktualnej pozycji użytkownika na mapie i przybliża do odpowiedniego momentu.

Cała klasę możesz zobaczyć poniżej:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    private double lat;
    private double lng;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        LocationTracker locationTracker = LocationTracker.getInstance();
        locationTracker.init(this);

        lat = locationTracker.getLatitude();
        lng = locationTracker.getLongitude();
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        LatLng currentLocation = new LatLng(lat, lng);
        LatLng friendLocation = new LatLng(50.014800, 20.975451);
        mMap.addMarker(new MarkerOptions()
                .position(currentLocation)
                .title("Your Location")
                .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));
        mMap.addMarker(new MarkerOptions()
                .position(friendLocation)
                .title("Fake Friend"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLocation));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(15.0f));
    }
}

Na mapie w pojawi się również marker dla restauracji, która jest nam proponowana. Pojawi się kiedy powstanie moduł zbierający informację o restauracjach.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s