Autore Topic: ricerca posizione con versione 2 di google maps  (Letto 682 volte)

Offline kazuro

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s3
  • Sistema operativo:
    windows 7
ricerca posizione con versione 2 di google maps
« il: 11 Maggio 2013, 12:48:40 CEST »
0
salve ragazzi sono nuovo di queste parti. Se ho deciso di postare qui i miei problemi è perchè leggendo i vostri articoli mi siete serviti molto
Ora però non so perchè la versione 1 di google maps non mi fa piu vedere la mappa sul dispositivo e quindi sono passato alla versione 2 ma ho alcuni problemi a trovare codice in rete non se ne trova molto.
Quello che a me serve per andare avanti con il progetto è come recupero le coordinate della mia posizione attuale?
Codice (Java): [Seleziona]
package com.example.mapsapitutorial;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.LocationSource;
import com.google.android.gms.maps.LocationSource.OnLocationChangedListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.MarkerOptions;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends FragmentActivity implements LocationListener, LocationSource  {
         private GoogleMap mMap;
     private OnLocationChangedListener mListener;
         private LocationManager locationManager;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
                 
        if(locationManager != null)
        {
            boolean gpsIsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            boolean networkIsEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
             
            if(gpsIsEnabled)
            {
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000L, 10F, this);
            }
            else if(networkIsEnabled)
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000L, 10F, this);
            }
            else
            {
                //Show an error dialog that GPS is disabled...
                Toast.makeText(this, "nessun provider disponibile", Toast.LENGTH_SHORT).show();  
            }
            }
        else
        {
            //Show some generic error dialog because something must have gone wrong with location manager.
                Toast.makeText(this, "provider abilitato ma ci sono problemi ", Toast.LENGTH_SHORT).show();  
        }
     
    setUpMapIfNeeded();
    CameraPosition  loc= mMap.getCameraPosition();
    if (loc==null){
        Toast.makeText(this, "locazione non c'e -.-", Toast.LENGTH_SHORT).show();
    }
   LatLng attuale=new LatLng (loc., loc.getLongitude());
   mMap.addMarker(new MarkerOptions().position(attuale));
   
}

         @Override
            public void onPause()
            {
                if(locationManager != null)
                {
                    locationManager.removeUpdates(this);
                }
                 
                super.onPause();
            }
             
            @Override
            public void onResume()
            {
                super.onResume();
                 
                setUpMapIfNeeded();
                 
                if(locationManager != null)
                {
                    mMap.setMyLocationEnabled(true);
                }
            }
           
            private void setUpMapIfNeeded() {
                // Do a null check to confirm that we have not already instantiated the map.
                if (mMap == null)
                {
                    // Try to obtain the map from the SupportMapFragment.
                    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
                    // Check if we were successful in obtaining the map.
                   
                    if (mMap != null)
                    {
                        setUpMap();
                    }
         
                    //This is how you register the LocationSource
                    mMap.setLocationSource(this);
               
                }
               
            }
            private void setUpMap()
            {
                mMap.setMyLocationEnabled(true);
            }
             
            @Override
            public void activate(OnLocationChangedListener listener)
            {
                mListener = listener;
            }
             
            @Override
            public void deactivate()
            {
                mListener = null;
            }
           
            @Override
            public void onLocationChanged(Location location)
            {
                if( mListener != null )
                {
                    mListener.onLocationChanged( location );
             
                    LatLngBounds bounds = this.mMap.getProjection().getVisibleRegion().latLngBounds;
             
                    if(!bounds.contains(new LatLng(location.getLatitude(), location.getLongitude())))
                    {
                         //Move the camera to the user's location once it's available!
                         mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude())));
                    }
                }
            }
           
            @Override
            public void onProviderDisabled(String provider)
            {
                // TODO Auto-generated method stub
                Toast.makeText(this, "provider disabled", Toast.LENGTH_SHORT).show();
            }
         
            @Override
            public void onProviderEnabled(String provider)
            {
                // TODO Auto-generated method stub
                Toast.makeText(this, "provider enabled", Toast.LENGTH_SHORT).show();
            }
         
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras)
            {
                // TODO Auto-generated method stub
                Toast.makeText(this, "status changed", Toast.LENGTH_SHORT).show();
            }
           
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

}
sapreste aiutarmi?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ricerca posizione con versione 2 di google maps
« Risposta #1 il: 11 Maggio 2013, 13:00:52 CEST »
0
Puoi registrare un listener con questo metodo:

setOnMyLocationChangeListener

Offline kazuro

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s3
  • Sistema operativo:
    windows 7
Re:ricerca posizione con versione 2 di google maps
« Risposta #2 il: 11 Maggio 2013, 20:12:27 CEST »
0
ok con la posizione ho risolto cosi
Codice (Java): [Seleziona]
Criteria criteria = new Criteria();  
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    String provider = locationManager.getBestProvider(criteria, true);
    Location location = locationManager.getLastKnownLocation(provider);
    LatLng attuale=new LatLng (location.getLatitude(), location.getLongitude());
    mMap.addMarker(new MarkerOptions().position(attuale).title("attuale posizione"));
ora però mi servirebbe sapere come inserire un editText ed un bottone in un unico fragment , mi spiego meglio io ho un fragment che prende tutto il display
ed è quello della mappa ora però devo far si che l'utente possa inserire una certa distanza quindi mi servirebbe un un testo per inserire dati e un bottono per mandare i dati in formato json !!
sapreste dirmi come si fa a gestire un unica attività suddivisa in piu fragment?