2014-04-16 2 views
11

Ich möchte ein Programm erstellen, um die Entfernung zwischen einigen Orten zu meinem aktuellen Standort zu berechnen, aber meine googleMap.getMyLocation(); funktioniert nicht richtig.googleMap.getMyLocation(); kann den aktuellen Standort nicht finden

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; 
} 

ich speicherte den Breiten- und Längengrad einiger Stellen in lat [] und lon []. LatLng 'von' ist mein Standort und 'zu' ist meine Zielorte. das Problem auftreten, wenn i

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

will ich ändern, um die Berechnung zu tun, ohne die Googlemap zu öffnen. Die Google Maps werden erscheinen, wenn ich den Kartenknopf als Popup-Fenster berühre. so wird die Berechnung geschehen ohne Öffnen googlemap

bitte helfen Sie mir

+0

getMyLocation(), [diese Methode ist veraltet] (https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html). Verwenden Sie stattdessen LocationClient. – AlexDG

+0

verwenden Sie Google Map v2? –

+0

@Alex ich weiß nicht, wie man LocationClient verwendet. Kannst du es ausarbeiten? – user3506223

Antwort

21

Versuchen Sie, ... Ich hoffe, dass diese Hilfe sein wird Ihnen

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

ja seine arbeit ... tq ... – user3506223

3

getMyLocation(), this method is deprecated. Verwenden Sie stattdessen LocationClient.

Sie Informationen über LocationClient finden können und wie aktuellen Standort dieses here

6

Das ist für dich mein Code, ich hoffe, das hilft dir ... bearbeite es, wenn du denkst, es ist nicht mit korrekter sintaxis ...

Diese arbeit für android 4.x und 5.x und 6.x, ich teste das nicht 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

danke you.this funktioniert für mich.und das ist ein guter ansatz. –