0

Je veux avoir un custom info window apparaître sur cliquez sur.Fenêtre d'informations personnalisée pour google maps android

Je veux que ce soit quelque chose comme ceci:

ImageView 

TextView 

TextView 

TextView 

Button Button 

j'ai vu autre question après à ce sujet, mais il est encore confus.

+0

bien pour un InfoWindows ne sont pas des vues en direct de sorte que vous ne pouvez pas mettre un bouton dans l'InfoWindow et attendez d'entendre pour les événements clic – tyczj

+0

est là de toute façon que je peux l'avoir de sorte qu'un clic sur le marqueur me permettra de cliquer sur les boutons sinon à travers une fenêtre d'information – user3748957

+0

ouvrir une boîte de dialogue sur le marqueur cliquez sur – tyczj

Répondre

1

A propos ImageView et TextView, essayez ceci:

définir une mise en page infowindow: infowindowlayout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:background="#FFFFFF" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

</LinearLayout> 

Dans votre MapActivity (ce qui est un exemple pour un marqueur, mais vous pouvez utiliser ceci aussi pour d'autres marqueurs):

public class MapActivity extends Activity { 
private GoogleMap mMap; 
private Marker Somewhere; 
private int markerclicked; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 
... 
... 
final LatLng somewhere = new LatLng(..., ...); 

Somewhere=mMap.addMarker(new MarkerOptions() 
.position(somewhere) 
.title("YOUR TITLE") 
.snippet("INFO") 
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); 

... 
... 
... 

mMap.setInfoWindowAdapter(new InfoWindowAdapter() { 

     // Use default InfoWindow frame 
     @Override 
     public View getInfoWindow(Marker arg0) { 
      return null; 
     } 

     // Defines the contents of the InfoWindow 
     @Override 
     public View getInfoContents(Marker arg0) { 

      // Getting view from the layout file infowindowlayout.xml 
      View v = getLayoutInflater().inflate(R.layout.infowindowlayout, null); 

      LatLng latLng = arg0.getPosition(); 

      ImageView im = (ImageView) v.findViewById(R.id.imageView1); 
      TextView tv1 = (TextView) v.findViewById(R.id.textView1); 
      TextView tv2 = (TextView) v.findViewById(R.id.textView2); 
      String title=arg0.getTitle(); 
      String informations=arg0.getSnippet(); 

      tv1.setText(title); 
      tv2.setText(informations); 

      if(onMarkerClick(arg0)==true && markerclicked==1){ 
       im.setImageResource(R.drawable.yourdrawable); 
       } 


      return v; 

     } 
    }); 
} 

public boolean onMarkerClick(final Marker marker) { 

if (marker.equals(Somewhere)) 
    { 
     markerclicked=1; 
     return true; 
    } 
return false; 
} 

À propos des boutons, ImageB Uttons, etc. il n'y a aucun moyen. Le documentation dit:

Comme mentionné dans la section précédente sur les fenêtres d'information, une fenêtre d'information n'est pas une vue en direct, plutôt que la vue est rendu sous la forme d'une image sur la carte. Par conséquent, les écouteurs que vous avez définis dans la vue sont ignorés et vous ne pouvez pas distinguer les événements de clic sur les différentes parties de la vue. Il est conseillé de ne pas placer de composants interactifs - tels que des boutons, des cases à cocher ou des saisies de texte - dans votre fenêtre d'informations personnalisées.

Quoi qu'il en soit, il semble qu'il y ait une solution, voir this answer here. Je ne sais pas si cela est applicable avec mon code, mais cela semble fonctionner avec les boutons et les boutons image.

+0

cela fonctionne pour la plupart, mais l'image ne s'affiche pas – user3748957

+0

Pour moi, ça marche, je l'ai testé avant de l'afficher – Kurtis92

Questions connexes