2013-05-17 3 views
0

Je suis en train d'afficher loaction actuelle et la longitude, la latitude. Je peux facilement chercher la longitude & latitude mais pas en mesure d'afficher l'emplacement actuel. J'affiche mon code ci-dessous.afficher Non emplacement, mais afficher la longitude et latitude

public class MainActivity extends Activity implements LocationListener{ 
LocationManager locationManager ; 
    String provider; 
    Context context; 

    @Override public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
    } 
} 




    if(provider!=null && !provider.equals("")){ 

     // Get the location from the given provider 
     Location location = locationManager.getLastKnownLocation(provider); 

     locationManager.requestLocationUpdates(provider, 20000, 1, this); 


     if(location!=null) 
     { 
      onLocationChanged(location); 


      //Toast.makeText(getApplicationContext(),"Hello1",Toast.LENGTH_SHORT).show(); 



     } 
     else 
      Toast.makeText(getBaseContext(), "Location can't be retrieved", Toast.LENGTH_SHORT).show(); 

    }else{ 
     Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show(); 
    } 
} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

@Override 
public void onLocationChanged(final Location location) { 
    // Getting reference to TextView tv_longitude 
    TextView tvLongitude = (TextView)findViewById(R.id.tv_longitude); 

    // Getting reference to TextView tv_latitude 
    TextView tvLatitude = (TextView)findViewById(R.id.tv_latitude); 

    // Setting Current Longitude 
    tvLongitude.setText("Longitude:" + location.getLongitude()); 

    // Setting Current Latitude 
    tvLatitude.setText("Latitude:" + location.getLatitude()); 


// From here i want to get the location, as i pass current longitude & 

latitude ici. Il passe null en adresse signifie ici qu'il exécute else au lieu de if.

try { 
     Toast.makeText(getApplicationContext(),"Hello1",Toast.LENGTH_SHORT).show(); 
     Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault()); 
     List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 

     if (addresses != null) { 
      Address address = addresses.get(0); 
      // sending back first address line and locality 
      String result = address.getAddressLine(0) + ", " + address.getLocality(); 
      Toast.makeText(getApplicationContext(),"result",Toast.LENGTH_SHORT).show(); 
     } 
    if (addresses.size() > 0) { 
     String address = ""; 
     for (int index = 0; index < addresses.get(0).getMaxAddressLineIndex(); index++) 
      address += addresses.get(0).getAddressLine(index) + " "; 

     Toast.makeText(getApplicationContext(),"Hello",Toast.LENGTH_SHORT).show(); 
     Log.v("AddressTag", address); 
    } 

    else 
    { 
     Toast.makeText(getApplicationContext(),"Hello2",Toast.LENGTH_SHORT).show(); 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

} 




@Override 
public void onProviderDisabled(String provider) { 
    // TODO Auto-generated method stub  
} 

@Override 
public void onProviderEnabled(String provider) { 
    // TODO Auto-generated method stub  
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 
    // TODO Auto-generated method stub  
} 
+0

Code? Publiez-le ici uniquement –

+0

public class MainActivity extends Activity implémente LocationListener { \t \t LocationManager locationManager; \t Fournisseur de chaînes; \t Contexte contextuel; \t @Override public void onCreate (groupe savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); – user2368731

+1

Modifiez la question avec du code.De cette façon, ce n'est pas lisible –

Répondre

0

Si Liste est vide/vide Je parie que vous n'avez pas un service de backend de Géocode pour faire les recherches réelles. Le documentation says que « La classe géocodage nécessite un service de back-end qui ne figure pas dans le cadre Android de base. Les méthodes de requête géocodeur retourner une liste vide s'il n'y a pas de service de back-end dans la plate-forme. » Si vous souhaitez utiliser le Google Maps API pour la recherche inversée, vous devez utiliser include it in your project et obtain a Maps API key. « Dans les versions précédentes du SDK, le package com.google.android.maps a été inclus dans l'image standard de la bibliothèque Android et système. Dans le SDK Android 1.5, ce n'est pas le cas. La bibliothèque Android 1.5 et de l'image du système ne comprennent pas la bibliothèque externe de Maps (com.google.android.maps) Cependant, la bibliothèque externe Maps est disponible dans le cadre du module complémentaire Google API pour le SDK Android "

Mise à jour: puisque vous mentionnez que le GeoCoder.isPresent() renvoie true, cela signifie qu'un service backend existe et que le problème est ailleurs. J'ai jeté un coup d'oeil à la FAQ de Google Maps API et il mentionne que lat/long à adresse recherche doesn't work everywhere. Jetez un oeil à this spreadsheet et régler le filtre de géocodage sur Non est le pays que vous faites pour la liste des recherches?

+0

je ne suis pas capable de se défaire de ce que vous dites exactement bcz je suis nouveau à android. Plz donne moi la ligne de code ce que je dois ajouter à perfrm cette tâche .. – user2368731

+0

La solution à votre problème est dans les liens dans ma réponse. Pourquoi ne pas lire la documentation liée et essayer d'ajouter l'API Google Maps à votre projet, puis mettre à jour votre question avec les problèmes que vous rencontrez. Demander simplement à quelqu'un d'autre d'écrire votre code n'est pas bon. – britzl

+0

Je ne sais pas comment ajouter google map api dedans. Plz m'aider – user2368731

0

Êtes-vous sûr que le Geocoder travaille sur votre appareil? C'est ce qu'ils spécifient dans la description de Geocoder. The Geocoder class requires a backend service that is not included in the core android framework. The Geocoder query methods will return an empty list if there no backend service in the platform. Use the isPresent() method to determine whether a Geocoder implementation exists. Ce ne fonctionne que sur quelques appareils, si vous voulez vraiment obtenir l'adresse que vous devez utiliser l'api google. https://developers.google.com/maps/documentation/geocoding/

+0

Je reçois seulement la latitude et la longitude et maintenant avec l'aide du géocodeur inverse je veux obtenir la position actuelle. Plz laissez-moi savoir où je me trompe dans le code. Je suis nouveau à android – user2368731

+0

Le géocodeur ne fonctionne pas sur tous les appareils, il ne fonctionne que sur quelques appareils. Vous devez d'abord faire 'Geocoder.isPresent()' pour voir si le géocodeur est disponible sur votre appareil. Si ce n'est pas vous ne pouvez pas l'utiliser et vous devez utiliser les services google pour obtenir l'adresse – bogdan

+0

je suis le tester sur l'émulateur et il montre le géocodeur n'est pas présent. maintenant que dois-je faire ..? – user2368731

0

vous ont donné ces autorisations dans votre manifeste

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

Et est votre appareil connecté à Internet?

vérifier avec Geocoder.isPresent() si le géocodeur est présent ou non

+0

J'ai déjà ajouté l'autorisation dans le manifeste mais geocoder n'est pas présent. Quand je vérifie geocoder.isPresent() il renvoie false. Maintenant, que dois-je faire ..? – user2368731

+0

geocoder est présent mais donne une erreur dans les adresses = geo.getFromLocation (location.getLatitude(), location.getLongitude(), 1); – user2368731

+0

plz aidez-moi j'essaie de faire cela depuis les trois derniers jours – user2368731

Questions connexes