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 :

Ajouter plusieurs markers dans un ItemizedOverlay.


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Ajouter plusieurs markers dans un ItemizedOverlay.
    Bonjour à tous,

    j'ai suivi le tutoriel de google pour créer une application avec google maps.
    (http://developer.android.com/resourc...o-mapview.html)

    J'ai besoin d'ajouter plusieurs marqueurs à cette carte mais ma méthode ne fonctionne pas, seul le dernier marqueur ajouté est affiché.

    Voici mon code pour ajouter les marqueurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    GeoPoint[] mapPoints = new GeoPoint[mapPlaces.length];
    OverlayItem[] mapItems = new OverlayItem[mapPlaces.length];
     
    for(int i=0; i<mapPlaces.length;i++){
     
        double latitude = Double.parseDouble(mapPlaces[i].getLatitude());
        double longitude = Double.parseDouble(mapPlaces[i].getLongitude());
     
        mapPoints[i] = new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
        mapItems[i] = new OverlayItem(mapPoints[i], mapPlaces[i].getTitle(), mapPlaces[i].getAddress());                                       
        itemizedoverlay.addOverlay(mapItems[i]);
    }
     
    mapOverlays.add(itemizedoverlay);
    mapPlaces est un tableau contenant des objets Place ayant des attributs latitude, longitude, title et address.

    Si vous avez une idée pour résoudre ce problème n'hésitez pas

    Quentin

  2. #2
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Bonjour

    Au vu du code que tu as publié, voici la solution que j'ai constaté :

    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
     
     
     
    List<Overlay> mapOverlays = mapView.getOverlays();
     
    		for(int i=0; i<mapPlaces.length;i++){
     
    		    double latitude = Double.parseDouble(mapPlaces[i].getLatitude());
    		    double longitude = Double.parseDouble(mapPlaces[i].getLongitude());
     
    		 GeoPoint   point= new GeoPoint((int) (latitude * 1E6), (int) (longitude * 1E6));
    		 OverlayItem   mapItems = new OverlayItem(point, point.getTitle(), point.getAddress());                                       
    		    itemizedoverlay.addOverlay(mapItems);
    		}
     
    		mapOverlays.add(itemizedoverlay);
    Si ca ne marche pas cette solution, surement tu as pas implementer la methode AddOVerlay

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse mais cela ne fonctionne toujours pas.
    Voici mon implémentation de addOverlay:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void addOverlay(OverlayItem overlay) {
    	    mOverlays.add(overlay);	 
    	    populate();
    	}
    En sachant que mOverlays est de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    Quentin

  4. #4
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Citation Envoyé par KaiserQ Voir le message
    Merci pour ta réponse mais cela ne fonctionne toujours pas.
    Voici mon implémentation de addOverlay:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void addOverlay(OverlayItem overlay) {
    	    mOverlays.add(overlay);	 
    	    populate();
    	}
    En sachant que mOverlays est de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    Quentin

    As tu crée une class qui s'etend de ItemizedOverlay??

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui, c'est la classe HelloItemizedOverlay qui étend ItemizedOverlay :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
     
    	private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    	private Context mContext;
    	private Drawable marker=null;
     
    	public HelloItemizedOverlay(Drawable marker) {
    		super(boundCenterBottom(marker));
    		this.marker = marker;
     
    	}
     
    	public HelloItemizedOverlay(Drawable marker, Context context) {
    		super(boundCenterBottom(marker));
    		mContext = context;
    		this.marker = marker;
    	}
     
    	@Override
    	public void draw(Canvas canvas, MapView mapView, boolean shadow) {
    	super.draw(canvas, mapView, shadow);
    	boundCenterBottom(marker);
    	}
     
    	@Override
    	protected OverlayItem createItem(int i) {
    	  return mOverlays.get(i);
    	}
     
    	@Override
    	public int size() {
    	  return mOverlays.size();
    	}
     
    	@Override
    	protected boolean onTap(int index) {
    	  OverlayItem item = mOverlays.get(index);
    	  AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
    	  dialog.setTitle(item.getTitle());
    	  dialog.setMessage(item.getSnippet());
    	  dialog.show();
    	  return true;
    	}
     
    	public void addOverlay(OverlayItem overlay) {
    	    mOverlays.add(overlay);	 
    	    populate();
    	}
     
    }

  6. #6
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Je voie.
    Dis moi ou est ce que tu as definis la variable

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Le problème vient sûrement de la boucle parce que si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    GeoPoint point = new GeoPoint(19240000,-99120000);
    OverlayItem overlayitem = new OverlayItem(point, "", "");
    GeoPoint point2 = new GeoPoint(35410000, 139460000);
     OverlayItem overlayitem2 = new OverlayItem(point2, "", "");
     
    itemizedoverlay.addOverlay(overlayitem);
    itemizedoverlay.addOverlay(overlayitem2);
     
    mapOverlays.add(itemizedoverlay);
    Les deux points sont bien ajoutés à la carte, c'est pour ça que j'utilise des tableaux pour créer tous mes items puis les ajouter à l'overlay.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je définis cette variable dans la fonction onCreate().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin);
     
    HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable,this);

  9. #9
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Il faut voir le contenu de ta boucle;

  10. #10
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Petite question bête : est-ce que tous tes points ne sont pas au même endroit (même latitude, même longitude) ?
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait l'erreur provenait d'une de mes fonctions qui récupérait les données depuis un fichier json.

    Vraiment désolé

    Quentin

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 53
    Points : 71
    Points
    71
    Par défaut
    Salut KaiserQ, y a pas à rougir ou à , des erreurs de ce genre tout le monde en fait, dis moi tu voulais dire que tous les points de la carte étaient au même endroit ?

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

Discussions similaires

  1. [MySQL] comment ajouter plusieurs articles dans une BD MySql+tables temporaires
    Par forbidden_fruit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/05/2008, 12h00
  2. Ajouter plusieurs entrées dans une table
    Par flab78 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/04/2008, 15h17
  3. Réponses: 13
    Dernier message: 24/04/2008, 10h52
  4. requêtes ajout plusieurs données dans une table
    Par COLOMBAT dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2008, 17h27
  5. [legend] Ajout des markers dans la légende
    Par JackyPollux dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/11/2007, 10h41

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