IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Différents marqueurs GoogleMap


Sujet :

Android

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut Différents marqueurs GoogleMap
    Bonsoir,

    Je cherche à insérer des marqueurs différents selon le cas à savoir si c'est le point initial, final ou un point d'arrêt sur un itinéraire.

    J'ai pu créer un itinéraire sur click et j'insére les marqueurs maintenant je voudrais que l'icone soit différentes selon le cas. Est ce que je devrais avoir autant d'objet Drawable que de type de marqueurs?

    Dans mon cas j'ai deux classes : une qui représente la carte et l'autre la couche de marqueurs. Est ce que je devrais faire autant d'appel que de marqueurs du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Drawable marqueur = getResources().getDrawable(R.drawable.flagexport);
    		marqueur.setBounds(0, 0, marqueur.getIntrinsicWidth(),
    				marqueur.getIntrinsicHeight());
    		Drawable marqueurInt = getResources().getDrawable(R.drawable.flaginter);
    		marqueurInt.setBounds(0, 0, marqueurInt.getIntrinsicWidth(),
    				marqueurInt.getIntrinsicHeight());
    		Drawable marqueurFin = getResources().getDrawable(R.drawable.flagfinal);
    		marqueurFin.setBounds(0, 0, marqueurFin.getIntrinsicWidth(),
    				marqueurFin.getIntrinsicHeight());
    		mapView.getOverlays().add(new CalqueSites(marqueur, this));
                    mapView.getOverlays().add(new CalqueSites(marqueurInt, this));
                    mapView.getOverlays().add(new CalqueSites(marqueurFin, this));
    Merci d'avance pour votre aide

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonsoir,

    Oui, ou sinon il faut que tu le gèrent dans ta class Overlay en fonction d'un selecteur si tu ne veux pas passer ton drawable ...
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    Je préférerai le faire dans la classe overlay mais je sais pas comment vu que ma classe CalqueSites extends ItemizedOverlay<OverlayItem> et que je lui passe en paramètre le Drawable

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Je préférerai le faire dans la classe overlay mais je sais pas comment vu que ma classe CalqueSites extends ItemizedOverlay<OverlayItem> et que je lui passe en paramètre le Drawable
    Dans ce cas en créer une variable Type ex: (Begin, Nothing, End), et en fonction de cette variable tu afficheras le drawable correspondant. Les chemins du drawable seront en dur dans ton overlay tout ce que tu lui passeras en paramètres à cet objet et son type .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    Je viens de revenir vers ce point, j'ai commencé à tester la procèdure que vous m'avez indiqué mais pour le moment ça n'a pas abouti. Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class CalqueSites extends ItemizedOverlay<OverlayItem> {
    ........
    public CalqueSites(Drawable marker, Context context) {
    		super(marker);
    		this.marker = marker;
    		this.context = context;
    		marqueur = this.context.getResources().getDrawable(
    				R.drawable.flagexport);
    		marqueur.setBounds(0, 0, marqueur.getIntrinsicWidth(),
    				marqueur.getIntrinsicHeight());
    		marqueurInt = this.context.getResources().getDrawable(
    				R.drawable.flaginter);
    		marqueurInt.setBounds(0, 0, marqueurInt.getIntrinsicWidth(),
    				marqueurInt.getIntrinsicHeight());
    		marqueurFin = this.context.getResources().getDrawable(
    				R.drawable.flagfinal);
    		marqueurFin.setBounds(0, 0, marqueurFin.getIntrinsicWidth(),
    				marqueurFin.getIntrinsicHeight());
    	}
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {		
    		if (type == "Begin") {
    			this.marker = marqueur;
    		} else if (type == "Nothing") {
    			this.marker = marqueurInt;
    		} else if (type == "End") {
    			this.marker = marqueurFin;
    		}
    ..........
    }
    .................
    }
    mais il utilise toujours le marqueur par défaut qui est passé à partir de la classe MapActivity. est ce que c'est dû au fait qu'une fois l'instance crée : avec un marqueur il n'est plus possible de le changer?

    En attendant votre aide, je continue mes tests :-)

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Plutôt comme cela ^^.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public CalqueSites(int tontype, Context context) {
    		super(marker);
    		this.type= tontype;
    		this.context = context;
    		marqueur = this.context.getResources().getDrawable(
    				R.drawable.flagexport);
    		marqueur.setBounds(0, 0, marqueur.getIntrinsicWidth(),
    				marqueur.getIntrinsicHeight());
    		marqueurInt = this.context.getResources().getDrawable(
    				R.drawable.flaginter);
    		marqueurInt.setBounds(0, 0, marqueurInt.getIntrinsicWidth(),
    				marqueurInt.getIntrinsicHeight());
    		marqueurFin = this.context.getResources().getDrawable(
    				R.drawable.flagfinal);
    		marqueurFin.setBounds(0, 0, marqueurFin.getIntrinsicWidth(),
    				marqueurFin.getIntrinsicHeight());
    	}
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {		
    		if (type == 0) {
    			this.marker = marqueur;
    		} else if (type == 1) {
    			this.marker = marqueurInt;
    		} else if (type == 2) {
    			this.marker = marqueurFin;
    		}
    ..........
    }
    ex: (Begin, Nothing, End),
    Je pensais à un Enum ou des static const int...
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2006
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 209
    Points : 101
    Points
    101
    Par défaut
    J'ai trouvé comment faire, et voici le code si ça interesse quelqu'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public class CalqueSites extends ItemizedOverlay<OverlayItem> {
    ..............
    public CalqueSites(Drawable marker, Context context) {
    		super(marker);
    		this.marker = marker;
    		this.context = context;
    		marqueur = this.context.getResources().getDrawable(
    				R.drawable.flagexport);
    		marqueur.setBounds(0, 0, marqueur.getIntrinsicWidth(),
    				marqueur.getIntrinsicHeight());
    		marqueurInt = this.context.getResources().getDrawable(
    				R.drawable.flaginter);
    		marqueurInt.setBounds(0, 0, marqueurInt.getIntrinsicWidth(),
    				marqueurInt.getIntrinsicHeight());
    		marqueurFin = this.context.getResources().getDrawable(
    				R.drawable.flagfinal);
    		marqueurFin.setBounds(0, 0, marqueurFin.getIntrinsicWidth(),
    				marqueurFin.getIntrinsicHeight());
    	}
    @Override
    	public boolean onTouchEvent(MotionEvent event, MapView mapView) {
    		final int action = event.getAction();
    GeoPoint p = mapView.getProjection().fromPixels(
    						(int) event.getX(), (int) event.getY());
    				OverlayItem step = new OverlayItem(GeoTools.makeGeoPoint(
    						p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6), "",
    				"");
    				if (type == "Begin") {
    					step.setMarker(marqueur);
    				} else if (type == "Nothing") {
    					step.setMarker(marqueurInt);
    				} else if (type == "End") {
    					step.setMarker(marqueurFin);
    				}
     
    				items.add(step);
    populate();
    return false;
    	}
    .........
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] Différents marqueurs avec des infobulles pour chacun
    Par xillibit dans le forum APIs Google
    Réponses: 4
    Dernier message: 18/06/2011, 19h49
  2. Graphique avec marqueurs de différentes couleurs
    Par hector2 dans le forum Scilab
    Réponses: 7
    Dernier message: 06/02/2009, 18h05
  3. Avoir un marqueur différent par courbe
    Par captaine93 dans le forum MATLAB
    Réponses: 12
    Dernier message: 17/11/2008, 17h29
  4. Google map:Marqueurs différents selon niveau de zoom
    Par DeTeR dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/08/2008, 20h18
  5. Réponses: 2
    Dernier message: 17/05/2002, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo