2014-04-16 17 views
11

Voglio fare un programma per calcolare la distanza tra alcuni luoghi nella mia posizione corrente, ma il mio googleMap.getMyLocation(); non funziona correttamentegoogleMap.getMyLocation(); impossibile ottenere la posizione corrente

googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
googleMap.setMyLocationEnabled(true); 
googleMap.getUiSettings().setCompassEnabled(false); 
mylocation = googleMap.getMyLocation(); 
direction = new GMapV2Direction(); 

LatLng from, to; 
from = new LatLng(-7.26071409, 112.80674726); 
for(int i=0; i<lat.length; i++){  
    to = new LatLng(lat[i], lon[i]); 
    doc = direksi.getDocument(from, to, GMapV2Direction.MODE_DRIVING); 
    distance[i] = (double)direction.getDistanceValue(doc)/1000; 
} 

ho salvato la latitudine e la longitudine di alcuni luoghi in lat [] e lon []. LatLng 'from' is mylocation e 'to' sono i miei luoghi di destinazione. il problema appare quando cambio

from = new LatLng(-7.26071409, 112.80674726); 
to 
from = new LatLng(mylocation.getLatitude(), mylocation.getLongitude()); 

voglio fare il calcolo senza aprire le mappe di Google. le mappe di google appariranno quando toccherò il pulsante della mappa come finestra pop-up. quindi il calcolo avverrà senza aprire googlemap

per favore mi aiuti

+0

getMyLocation(), [questo metodo è deprecato] (https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html). utilizzare invece LocationClient. – AlexDG

+0

stai usando google map v2? –

+0

@Alex non so come usare LocationClient. Puoi elaborare? – user3506223

risposta

21

Prova questo ... Spero che questo sarà di aiuto a voi

LocationManager locationManager = (LocationManager) 
     getSystemService(Context.LOCATION_SERVICE); 
Criteria criteria = new Criteria(); 

Location location = locationManager.getLastKnownLocation(locationManager 
     .getBestProvider(criteria, false)); 
double latitude = location.getLatitude(); 
double longitude = location.getLongitude(); 
+0

sì il suo lavoro ... tq ... – user3506223

3

getMyLocation(), this method is deprecated. utilizzare invece LocationClient.

È possibile trovare informazioni sulla LocationClient e su come ottenere la posizione corrente here

6

Questo è il mio codice per voi, spero questo ti aiuta ... modifica se pensi, non è con sintassi corretta ...

Questo lavoro per Android 4.xe 5.xe 6.x, non testarlo in Android 7

//I use this like global var to edit or get informacion about google map 
GoogleMap gMap; 

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

if (ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
         ActivityCompat.requestPermissions(Activity_Map.this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); 
        }else{ 
         if(!gMap.isMyLocationEnabled()) 
          gMap.setMyLocationEnabled(true); 

         LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
         Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

         if (myLocation == null) { 
          Criteria criteria = new Criteria(); 
          criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
          String provider = lm.getBestProvider(criteria, true); 
          myLocation = lm.getLastKnownLocation(provider); 
         } 

         if(myLocation!=null){ 
          LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude()); 
          gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 14), 1500, null); 
         } 
        } 

} 
+0

grazie.questo funziona per me.e questo è un buon approccio. –

Problemi correlati