2011-11-22 6 views
0

J'essaie de donner une direction à l'utilisateur en utilisant google map d'un endroit à l'autre. J'utilise le code ci-dessous mais je ne sais pas pourquoi ça ne marche pas. Je n'arrive pas à comprendre le problème, tout semble correct.Android: Obtenir les directions de Google Map

final double latitude = 37.894404; 
final double longitude = -122.0660386; 

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
       Criteria criteria = new Criteria(); 
       criteria.setAccuracy(Criteria.ACCURACY_FINE); 
       criteria.setAltitudeRequired(false); 
       Location lastKnownLocation = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true)); 

       if(lastKnownLocation != null){ 

        double lat = lastKnownLocation.getLatitude(); 
        double longi = lastKnownLocation.getLongitude(); 

        Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+lat+","+longi+"&daddr="+latitude+","+longitude)); 

        startActivity(intent); 

       }else{ 

        Toast.makeText(contactus.this,"Coudn't get provider", Toast.LENGTH_SHORT).show(); 
       }   
      } 

Répondre

1

En fait, je l'ai travaillé et est ici le code je,

final double latitude = 45.894404; 
final double longitude = -112.0660386; 

LocationManager lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
Criteria crit = new Criteria(); 
String towers = lManager.getBestProvider(crit, false); 
Location userCurrentLocation = lManager.getLastKnownLocation(towers); 

if(userCurrentLocation != null){ 

    double lat = userCurrentLocation.getLatitude(); 
    double longi = userCurrentLocation.getLongitude(); 

    Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?saddr="+lat+","+longi+"&daddr="+latitude+","+longitude)); 
    startActivity(intent); 

}else{ 

    Toast.makeText(contactus.this, "Couldn't locate a provider to find your location", Toast.LENGTH_LONG).show(); 
} 

ne pas oublier d'ajouter le premission pour trouver l'emplacement de l'utilisateur pour vous manifester, inclure ci-dessus,

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
0

Tout d'abord vous devez envelopper votre appel à LocationManager avec un bloc try/catch et de saisir tout exception que vous obtenez de l'appel. Jetez un coup d'oeil ci-dessous. Cela fera l'appel et attraper l'exception .. Allez à partir de là une fois que vous savez pourquoi il revient NULL. Vous aurez toujours du mal à obtenir des géopoints de localisation en utilisant l'émulateur pour une raison quelconque. En outre, Google ne retourne pas toujours avec géopoints donc dans l'émulateur je boucle jusqu'à ce qu'il est revenu .. Pas une bonne idée

try{ 
       Location lastKnownLocation = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true)); 
       } 
       catch(IOException e) { 
       Log.e("IOException", e.getMessage()); 

       //Toaster on high-----------------// 
       Context context = getApplicationContext(); 
       CharSequence text = "IOException: " + e.getMessage(); 
       int dur = Toast.LENGTH_LONG; 
        Toast.makeText(context, text, dur).show(); 
+0

Je suis en fait d'exécuter ce sur un périphérique réel. aussi j'ai essayé de donner juste la longitude et la latitude au lieu de l'endroit actuel au google de google, mais cela n'a pas fonctionné! donc je ne pense pas que l'obtention de l'emplacement actuel est le problème – Mona