Ajouter une propriété personnalisée à un marqueur (Google Map Android API V2)

Lorsque vous utilisez Google Map API V3, je peux ajouter une propriété personnalisée de la manière suivante:

var marker = new google.maps.Marker({ position: userLocation, map: myGoogleMap, animation: google.maps.Animation.DROP, icon: avatar, title: userName, customProperty1: bla, customProperty2: bla, customProperty3: bla, ... 

});

  • Mettre en place Drag & Drop in Gingerbread
  • Consommant un service Web WCF à partir d'une application Android?
  • Transition de bloc entre la valeur minimale et la valeur maximale dans NumberPicker
  • Est-il possible de toujours afficher la barre d'action lorsque vous utilisez AdjustPan en tant que mode d'entrée douce?
  • Imprimez un fichier PDF sur une imprimante à l'aide de PrintWriter via la connexion Socket
  • Quelle est la différence entre fill_parent et wrap_content?
  • Je me demande si je peux faire la même chose pour API V2 Android, la raison pour laquelle je veux faire cela, c'est que chaque fenêtre d'information de chaque marqueur doit connaître certaines informations de ce marqueur. Et j'essaie d'y parvenir dans la fonction de render ci-dessous:

     private void render(Marker marker, View view) { int badge = R.drawable.android_face; if (marker.customProperty) //here I need to know this property to decide which image to use badge = R.drawable.bla; ((ImageView) view.findViewById(R.id.badge)) .setImageResource(badge); } 

    One Solution collect form web for “Ajouter une propriété personnalisée à un marqueur (Google Map Android API V2)”

    Vous ne pouvez pas étendre directement Marker , car c'est une dernière classe, mais vous avez quelques options:

    0) À partir de Google Maps Android API v2 version 9.4.0, vous pouvez utiliser Marker::getTag et Marker::setTag . C'est probablement l'option préférée.

    1) Créez une carte pour stocker toutes les informations supplémentaires:

     private Map<Marker, MyData> allMarkersMap = new HashMap<Marker, MyData>(); 

    Lors de la création d'un marqueur, ajoutez-le à cette carte avec vos données:

     Marker marker = map.addMarker(...); allMarkersMap.put(marker, myDataObj); 

    Plus tard dans votre fonction de render :

     MyData myDataObj = allMarkersMap.get(marker); if (myDataObj.customProp) { ... 

    2) Une autre façon serait d'utiliser Marker.snippet pour stocker toutes les informations en tant que String et ensuite l'analyser, mais c'est une solution plutôt moche et inébranlable.

    3) Passez de l'API Android Google Maps Google Maps aux extensions de cartes Android .

    Ceci est très similaire au point 1, mais vous pouvez mémoriser directement MyData en marqueur, en utilisant

     marker.setData(myDataObj); 

    et ensuite:

     MyData myDataObj = (MyData) marker.getData(); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.