0

У меня есть EditText и Button Я хочу найти место на карте. Я использую AsyncTask, чтобы выполнить это мое призвание класса AsyncTask. Когда я использую Toast Сообщ это отобразить мое местоположение, но в карте она была принудительно закрытапоказать местоположение на google map android

new GeocoderTask().execute(location); 
Toast.makeText(getApplicationContext(), location, Toast.LENGTH_LONG).show(); 

Вот мой GeocoderTask класс для отображения местоположения на карте

private class GeocoderTask extends AsyncTask<String, Void, List<Address>>{ 

      @Override 
      protected List<Address> doInBackground(String... locationName) { 
       // Creating an instance of Geocoder class 
       Geocoder geocoder = new Geocoder(getBaseContext()); 
       List<Address> addresses = null; 

       try { 
        // Getting a maximum of 3 Address that matches the input text 
        addresses = geocoder.getFromLocationName(locationName[0], 3); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       }   
       return addresses; 
      } 


      @Override 
      protected void onPostExecute(List<Address> addresses) {   

       if(addresses==null || addresses.size()==0){ 
        Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show(); 
       } 

       // Clears all the existing markers on the map 
       googleMap.clear(); 

       // Adding Markers on Google Map for each matching address 
       for(int i=0;i<addresses.size();i++){     

        Address address = (Address) addresses.get(i); 

        // Creating an instance of GeoPoint, to display in Google Map 
        latLng = new LatLng(address.getLatitude(), address.getLongitude()); 

        String addressText = String.format("%s, %s", 
          address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "", 
          address.getCountryName()); 

        markerOptions = new MarkerOptions(); 
        markerOptions.position(latLng); 
        markerOptions.title(addressText); 

        googleMap.addMarker(markerOptions); 

        // Locate the first location 
        if(i==0)       
         googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));  
       }   
      }  
     } 
} 

Но это не отображает местоположение.

+1

help me any plz ..... –

+0

Обновить logcat –

+0

что вы думаете ??? –

ответ

0

Предположим, вы получили ошибку в строке new Geocoder(getBaseContext());, поэтому предлагаю вам использовать конструктор для передачи Context в AsyncTask:

private class GeocoderTask extends AsyncTask<String, Void, List<Address>>{ 

     private Context mContext; 
     public GeoCoderTask(Context context) { 
      super(); 
      mContext = context; 
     } 


     @Override 
     protected List<Address> doInBackground(String... locationName) { 
      // Creating an instance of Geocoder class 
      Geocoder geocoder = new Geocoder(mContext); 

      ... ... 

     } 
} 

Надежда эта помощь!

Смежные вопросы