Autore Topic: Recuperare posizione GPS e aggiungere marker  (Letto 931 volte)

Offline franci22

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: +1
    • Mostra profilo
    • Franci22 Apps
  • Dispositivo Android:
    Meizu M2 Note
  • Sistema operativo:
    Windows 10
Recuperare posizione GPS e aggiungere marker
« il: 02 Settembre 2015, 13:35:34 CEST »
0
Ciao a tutti,
sto cercando di creare un applicazione che prenda le coordinate del GPS ogni tot di secondi ed inserisca un marker nella mappa.
Ho creato una Activity contenente la mappa di google tramite le API v2:
Codice (Java): [Seleziona]
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.google.android.gms.maps.*;
import com.google.android.gms.maps.model.*;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        map.setMyLocationEnabled(true);

        map.addMarker(new MarkerOptions()
                .title("Mi trovo qui")
                .snippet("Ecco dove sei")
                .position( )); //cosa devo aggiungere?
    }

}
In questa mappa ho aggiunto un marker ma non so come fare ad assegnare la posizione recuperata dal GPS.
Ho letto su internet che è possibile far partire una Activity al momento della pressione del Marker.
Mi potreste spiegare facilmente come si fa (essendo la mia prima applicazione che creo)? :-P
Grazie

EDIT:

Ho cercato su internet e sono arrivato a fare così:
Codice (Java): [Seleziona]
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.*;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.google.android.gms.maps.*;
import com.google.android.gms.maps.model.*;

public abstract class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
            return;
        }
    }

    public void onLocationChanged(Location location){
    double latitude = (double) (location.getLatitude());
    double longitude = (double) (location.getLongitude());
}
    public void onMapReady(GoogleMap map) {
            LatLng pos = new LatLng(latitude, longitude);
        map.setMyLocationEnabled(true);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 13));

        map.addMarker(new MarkerOptions()
                .title("Sei qua")
                .snippet("Eccoti")
                .position(pos));
    }
}
Il problema è che non riesco a far passare le variabili Double dalla classe onLocationChanged alla classe onMapReady e non ho idea come si faccia  :-P
« Ultima modifica: 02 Settembre 2015, 21:34:09 CEST da franci22 »

Offline emaborsa

  • Utente normale
  • ***
  • Post: 274
  • Java Developer
  • Respect: +33
    • Google+
    • emaborsa
    • Mostra profilo
    • www.emaborsa.com
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Linux 10 - Win8.1 - Android 4.1.2
Re:Recuperare posizione GPS e aggiungere marker
« Risposta #1 il: 21 Novembre 2015, 22:41:52 CET »
0
Allora,
prima di tutto onMapReady e onLocationChanged sono due metodi e non due classi. :)

Comunque nulla di più facile. onMapReady viene chiamato quando la mappa è  pronta, il che ti porta la mappa e ti permette di salvarti l'istanza:

Codice (Java): [Seleziona]
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener  {
    private GoogleMap mappa;

    public void onMapReady(GoogleMap map) {
        map.setMyLocationEnabled(true);
        this.mappa = map;
    }

    public void onLocationChanged(Location location){
        double latitude = (double) (location.getLatitude());
        double longitude = (double) (location.getLongitude());

        map.addMarker(new MarkerOptions()
            .title("Mi trovo qui")
            .snippet("Ecco dove sei")
            .position( )); //qui puoi usare i tuoi double!
    }
}
« Ultima modifica: 21 Novembre 2015, 22:46:39 CET da emaborsa »