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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du 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
    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
    Membre chevronné

    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
    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
    Nouveau membre du 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
    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
    Membre chevronné

    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
    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
    Nouveau membre du 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
    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
    Membre chevronné

    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
    Par défaut
    Je voie.
    Dis moi ou est ce que tu as definis la variable

  7. #7
    Nouveau membre du 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
    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.

+ 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