2011-02-09 3 views
2

Est-ce que quelqu'un a développé un code pour convertir une adresse en valeur lat/long. Je suis confondu avec Geocoder. Il serait d'une grande aide si je peux obtenir l'échantillon de code, j'utilise le code ci-dessous. il donne toujours l'erreur no address found. ne se bloque pasExemple de géocodage avancé Code pour Android?

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     myMap = (MapView) findViewById(R.id.simpleGM_map); // Get map from XML 
     btnSearch = (Button) findViewById(R.id.simpleGM_btn_search); // Get button from xml 
     adress = (EditText) findViewById(R.id.simpleGM_adress); // Get address from XML 

     gc = new Geocoder(this); // create new geocoder instance 

     btnSearch.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 

       pd = ProgressDialog.show(simpleGoogleMaps.this, "Working..", "Searching your address", true, false); //Show a progress dialog 
       //Thread thread = new Thread(simpleGoogleMaps.this); //then create a new thread 
      // thread.start(); //and start the thread. it will automatically call the standard run-function. 

       searchAdress = new Thread() { 
        public void run(){ 
         String addressInput = adress.getText().toString(); // Get input text 
         try { 
          foundAdresses = gc.getFromLocationName(addressInput, 5); // Search addresses 
          Thread.sleep(1500); 
         } catch (Exception e) { 
          // @todo: Show error message 
         } 
         showAdressResults.sendEmptyMessage(0);      
        } 
       }; 
       searchAdress.start(); 

      } 
     }); 
    } 

    private Handler showAdressResults = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       pd.dismiss(); 

       if (foundAdresses.size() == 0) { // if no address found, 
        // display an error 
        Dialog locationError = new AlertDialog.Builder(
          simpleGoogleMaps.this).setIcon(0).setTitle(
          "Error").setPositiveButton(R.string.ok, null) 
          .setMessage(
            "Sorry, your address doesn't exist.") 
          .create(); 
        locationError.show(); 

       } else { // else display address on map 
        for (int i = 0; i < foundAdresses.size(); ++i) { 
         // Save results as Longitude and Latitude 
         // @todo: if more than one result, then show a 
         // select-list 
         Address x = foundAdresses.get(i); 
         lat = x.getLatitude(); 
         lon = x.getLongitude(); 
        } 
        navigateToLocation((lat * 1000000), (lon * 1000000),myMap); // display the found address 
       } 

      } 
     }; 

    /** 
    * Navigates a given MapView to the specified Longitude and Latitude 
    * 
    * @param latitude 
    * @param longitude 
    * @param mv 
    */ 
    public static void navigateToLocation(double latitude, double longitude, MapView mv) { 
     GeoPoint p = new GeoPoint((int) latitude, (int) longitude); // new 
     // GeoPoint 
     mv.displayZoomControls(true); // display Zoom (seems that it doesn't 
     // work yet) 
     MapController mc = mv.getController(); 
     mc.animateTo(p); // move map to the given point 
     int zoomlevel = mv.getMaxZoomLevel(); // detect maximum zoom level 
     mc.setZoom(zoomlevel - 1); // zoom 
     mv.setSatellite(false); // display only "normal" mapview 
    } 
} 

Répondre