2017-08-11 1 views
0

J'ai lu le google documentation et j'ai déjà récupéré la clé photoreference de mes demandes de recherche à proximité. Lorsque nous lançons l'URL de l'API google place photos, nous obtenons l'image. Comme j'ai seulement une URL, comment montrer cette URL d'image sur une vue d'image.Comment récupérer la photo des lieux à proximité en utilisant google place api?

Mon Modal Classe:

 public class PlacesResponse { 

     public class Root implements Serializable { 

      @SerializedName("results") 
      public ArrayList<CustomA> customA = new ArrayList<>(); 
      @SerializedName("status") 
      public String status; 
     } 

     public class CustomA implements Serializable { 


      @SerializedName("geometry") 
      public Geometry geometry; 
      @SerializedName("vicinity") 
      public String vicinity; 
      @SerializedName("name") 
      public String name; 
      @SerializedName("photos") 
      public ArrayList<Photos> photos = new ArrayList<>(); 
      @SerializedName("place_id") 
      public String place_id; 

     } 

     public class Photos implements Serializable{ 

      @SerializedName("photo_reference") 
      public String photo_reference; 

     } 

     public class Geometry implements Serializable{ 

      @SerializedName("location") 
      public LocationA locationA; 

     } 

     public class LocationA implements Serializable { 

      @SerializedName("lat") 
      public String lat; 
      @SerializedName("lng") 
      public String lng; 


     } 


    } 

Code pour les lieux proches Rechercher demande

private void fetchStores(String placeType) { 

     Call<PlacesResponse.Root> call = apiService.doPlaces(latLngString,radius,placeType, ApiClient.GOOGLE_PLACE_API_KEY); 
     call.enqueue(new Callback<Root>() { 
      @Override 
      public void onResponse(Call<PlacesResponse.Root> call, Response<PlacesResponse.Root> response) { 
       PlacesResponse.Root root = (Root) response.body(); 


       if (response.isSuccessful()) { 

        if (root.status.equals("OK")) { 

         results = root.customA; 

         storeModels = new ArrayList<>(); 
         distnaceModels = new ArrayList<>(); 

         Log.i(TAG,"fetch stores"); 

         for (int i = 0; i < results.size(); i++) { 


          PlacesResponse.CustomA info = (CustomA) results.get(i); 

         String place_id = results.get(i).place_id; 
      // this gives me the photo reference for the request 

         String photo_reference = results.get(i).photos.get(0).photo_reference; 

          fetchDistance(info); 
         // fetchPlace_details(place_id); 


         } 


        } else { 
         Toast.makeText(getApplicationContext(), "No matches found near you", Toast.LENGTH_SHORT).show(); 
        } 

       } else if (response.code() != 200) { 
        Toast.makeText(getApplicationContext(), "Error " + response.code() + " found.", Toast.LENGTH_SHORT).show(); 
       } 


      } 

      @Override 
      public void onFailure(Call call, Throwable t) { 
       // Log error here since request failed 
       call.cancel(); 
      } 
     }); 


    } 

classe Adaptateur

public class Rv_adapter extends RecyclerView.Adapter<MyViewHolder> { 

    private ArrayList<PlacesResponse.CustomA> stLstStores; 
    private ArrayList<Modal> storeModels; 

    private static final int TYPE_HEAD=0; 
    private static final int TYPE_LIST=1; 

    public Rv_adapter(ArrayList<PlacesResponse.CustomA> stLstStores, ArrayList<Modal> storeModels) { 

     this.stLstStores = stLstStores ; 
     this.storeModels = storeModels; 
    } 

    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 


     if(viewType==TYPE_LIST) { 
      View itemView = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.recyclerview_listitem, parent, false); 

      return new MyViewHolder(itemView,viewType); 
     } 
     else if(viewType==TYPE_HEAD) 
     { 
      View itemView = LayoutInflater.from(parent.getContext()) 
        .inflate(R.layout.recyclerview_header, parent, false); 

      return new MyViewHolder(itemView,viewType); 
     } 
     return null; 
    } 

    @Override 
    public int getItemViewType(int position) { 

     if(position==0){ 
      return TYPE_HEAD;} 
     else{ 
      return TYPE_LIST; 
     } 

    } 

    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) 
    { 

     Log.i("adapter_posn",holder.getAdapterPosition()+""); 

     Log.i("view type",holder.view_type+""); 
      if(holder.view_type == TYPE_LIST) { 

       holder.res_name.setText(stLstStores.get(holder.getAdapterPosition()-1).name); 

       //    holder.res_address.setText(storeModels.get(holder.getAdapterPosition()-1).address); 
//    holder.res_phone.setText(storeModels.get(holder.getAdapterPosition()-1).phone_no); 
//    holder.res_rating.setText(String.valueOf(storeModels.get(holder.getAdapterPosition()-1).rating)); 
//    holder.res_distance.setText(String.valueOf(storeModels.get(holder.getAdapterPosition()-1).distance)); 
      } 
      else if (holder.view_type == TYPE_HEAD) 
      { 
       holder.current_location.setText(String.valueOf(storeModels.get(holder.getAdapterPosition()).current_location)); 
      } 
    } 

    @Override 
    public int getItemCount() { 

     return stLstStores.size()+1; 

    } 

    public class MyViewHolder extends RecyclerView.ViewHolder { 

     TextView res_name; 
     TextView res_rating; 
     TextView res_address; 
     TextView res_phone; 
     TextView res_distance; 
     TextView current_location; 
     ImageView res_image; 
     int view_type; 

     public MyViewHolder(View itemView,int viewType) { 
      super(itemView); 

      if(viewType == TYPE_LIST) { 

       view_type=1; 
       this.res_name = (TextView) itemView.findViewById(R.id.name); 
       this.res_rating = (TextView) itemView.findViewById(R.id.rating); 
       this.res_address = (TextView) itemView.findViewById(R.id.address); 
       this.res_phone = (TextView) itemView.findViewById(R.id.phone); 
       this.res_distance = (TextView) itemView.findViewById(R.id.distance); 
       this.res_image = (ImageView) itemView.findViewById(R.id.res_image); 
      } 
      else if(viewType == TYPE_HEAD){ 
       view_type = 0; 
       this.current_location = (TextView) itemView.findViewById(R.id.location_tv); 

      } 
     } 


    } 
} 

S'il vous plaît noter que je formerai l'URL de l'image en plaçant la référence photo, Clé de l'API et la largeur, je veux savoir comment afficher cette image sous la forme d'une image dans l'image

Répondre

1

Vous pouvez utiliser Picasso pour cela;

ImageView thumbNail; 

Picasso.with(MainActivity.this).load(photo_reference).noFade().into(thumbNail); 
+0

ici 'photo_reference' est l'URL de la photo? –

+0

Afficher dans json la réponse des endroits api ... quelle clé vous donne l'image de l'endroit –

+0

aller chercher cela dans le magasin de réponses dans une chaîne et charger dans ImageView en utilisant Picasso .... C'est tout –