2010-10-11 14 views
2

Ainsi la documentation BlackBerry vous montre l'exemple de code suivant:Géocodage inversé à l'aide de l'exemple de l'API Blackberry 5.0?

import net.rim.device.api.lbs.*; 
import javax.microedition.location.*; 

public class myReverseGeocode 
{ 
    private Thread reverseGeocode; 

    public myReverseGeocode() 
    { 
     reverseGeocode = new Thread(thread); 
     reverseGeocode.setPriority(Thread.MIN_PRIORITY); 
     reverseGeocode.start(); 
    } 

    Runnable thread = new Runnable() 
    { 
     public void run() 
     { 
      AddressInfo addrInfo = null; 

      int latitude = (int)(45.423488 * 100000); 
      int longitude = (int)(-80.32480 * 100000); 

      try 
      { 
       Landmark[] results = Locator.reverseGeocode 
       (latitude, longitude, Locator.ADDRESS); 

       if (results != null && results.length > 0) 
        addrInfo = results[0].getAddressInfo(); 
      } 
      catch (LocatorException lex) 
      { 
      } 
     } 
    }; 
} 

Comment puis-je utiliser le code ci-dessus passer longitude dynamiques/valeurs de latitude dans ma demande principale?

Répondre

2

Est-ce juste une question java de base? Vous devez utiliser le mot-clé 'final', afin que les valeurs puissent être passées à la classe anonyme détenue par la variable locale 'thread'

public myReverseGeocode(final double latArg, final double lonArg) 
{ 
    Runnable thread = new Runnable() 
    { 
     public void run() 
     { 
      AddressInfo addrInfo = null; 

      int latitude = (int)(latArg * 100000); 
      int longitude = (int)(lonArg * 100000); 

      try 
      { 
       Landmark[] results = Locator.reverseGeocode 
       (latitude, longitude, Locator.ADDRESS); 

       if (results != null && results.length > 0) 
        addrInfo = results[0].getAddressInfo(); 
      } 
      catch (LocatorException lex) 
      { 
      } 
     } 
    }; 
    reverseGeocode = new Thread(thread); 
    reverseGeocode.setPriority(Thread.MIN_PRIORITY); 
    reverseGeocode.start(); 

} 
+0

Merci Michael. – jini

+0

Les paramètres latArg et lonArg ne peuvent toujours pas être résolus dans run(). C'est qu'ils ne sont pas passés/accessibles dans la méthode run de runnable. – jini

+0

quelle erreur obtenez-vous? –