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 :

POI dans une MapView


Sujet :

Android

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Points : 17
    Points
    17
    Par défaut POI dans une MapView
    Bonjour,

    Je présente mon appli.
    J'accède à une mapView qui affiche ma position grâce aux coordonnées GPS et à l'API Google. J'indique ma position avec un marqueur.
    Je veux indiquer un certain de nombres de points (POI) autour de la position actuelle (par exemple ou se trouve les MacDo les plus proches).

    Ce que je pense :
    est il possible que tous les POI se trouve dans un fichier qui pourrait être parsé (est ce le bon terme ?) pour juste présenter les POI proche de ma position ? je pense que oui mais comment accéder à se fichier ?

    J'ai essayé de faire ça avec une Bdd mais mes connaissances ont une certaine limite.....surtout dans les requêtes query....bref...

    L'appli tourne correctement mais je bloque si l'affichage des geopoints (j'ai essayé mettre tous les geopoints en affichage et l'appli plante....ce que je peux comprendre avec un test d'affichage d'environs 1000 geopoints....)

    Je peux publier une partie de mon code si besoin.....

    Cordialement

  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
    [QUOTE=mcskrue;5604654]Bonjour,

    Si j'ai la memoire longue ca ne doit pas depassé 50 Geoppoints

  3. #3
    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
    Salut,

    J'imagine que chacun de tes POI a des coordonnées précises (lat et long).
    Tu connais ta position GPS, donc tu peux facilement connaitre la distance entre tes POI et l'utilisateurs. Donc il te suffit de filtrer sur cette distance.
    Qu'est ce que tu n'arrives pas à faire ?
    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

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Bonjour,
    je reviens que maintenant, j'étais en déplacement mais j'ai avancé et je suis arrivé à positionner tous mes POI sur ma carte.
    Lorsque la map s'ouvre, j'ai mis un niveau de zoom (15 de mémoire) qui me permet d'afficher que les POI dans ce zoom, si je zoom en arrière, forcément ca rame....
    J'étais en train de penser que je pourrais bloquer le niveau de zoom arrière pour éviter que l'utilisateur puisse afficher tous les POI (ce qui n'est pas le but recherché, ca va de soi...) et je vois que ta remarque MrDuChnok me parait la bien venue.
    Oui je connais lat et long des POI et de l'utilisateur et filtrer sur la distance (en fait faire un rayon si je comprend bien) me permet une très bonne idée.
    Je n'ai jamais fait ça encore, je vais étudier ça cet après midi mais si tu as une proposition de code (une piste), je la prend volontiers.

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private ArrayList<MonObjectPOI> filterMonObjectPOI(ArrayList<MonObjectPOI> listComplete,double distance,double latitudeReference,double longitudeReference)
    {
    float [] result= new float [3];
    ArrayList<MonObjectPOI> listFilter=new ArrayList<MonObjectPOI>();
    for( MonObjectPOI monPoi: listComplete)
    {
     
        Location.distanceBetween(monPoi.getLatitude(), monPoi.getLongitude, latitudeReference, longitudeReference, result);
    if(result[0]<distance) listFilter.add(monPoi);
     
    }
    return listFilter;
    }
    Ou tout simplement :

    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
     
    private ArrayList<MonObjectPOI> filterMonObjectPOI(ArrayList<MonObjectPOI> listComplete,double distance,double latitudeReference,double longitudeReference)
    {
     
      Location locationReference= new Location();
    locationReference.setLatitude(latitudeReference);
    locationReference.setLongitude(longitudeReference);
    for( MonObjectPOI monPoi: listComplete)
    {
     
     Location locationPOI= new Location();
    locationPOI.setLatitude(monPoi.getLatitude());
    locationPOI.setLongitude(monPoi.getLongitude);
     
    if(locationReference.distanceTo(locationPOI)<distance) listFilter.add(monPoi);
     
    }
    return listFilter;
    }

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    merci pour ta réponse.
    j'ai du mal à utiliser le code que tu as fourni, je n'utilisa pas de arraylist. J'utilise un calque avec ajout d'items
    code :
    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
    public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main_gps);
     
    		mapView =(MapView)findViewById(R.id.myGmap);
    		mapView.setBuiltInZoomControls(true);
    		mapController = mapView.getController();
     
    		mapController.setCenter(GeoTools.makeGeoPoint(latitude,longitude));
    		mapController.setZoom(15);
    		mapView.setSatellite(false);
     
    		// ce marqueur indique ma position (récup GPS du téléphone)
    		Drawable marqueur = getResources().getDrawable(R.drawable.xxx);
    		marqueur.setBounds(0, 0, marqueur.getIntrinsicWidth(),
    				marqueur.getIntrinsicHeight());
     
     
    // Appel d'un overlay pour les POI 
     
    		mapView.getOverlays().add(new CalquePOI(marqueur, this));
     
    	}
    et dans le fichier CalquePOI.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public CalquePOI(Drawable marker, Context context) {
    		super(marker);
    		this.marker = marker;
    		this.context = context;
     
    		// Liste des POI à afficher avec leurs coordonnées
    items.add(new OverlayItem(GeoTools.makeGeoPoint(lat,long),"xx", "Descriptif"));
    GeoTools.java détermine la méthode GeoPoint (pour faciliter la création d'objets) (j'ai commenté le code)
    voilà en gros...
    je continue à me pencher dessus cette semaine...

  7. #7
    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
    Peux tu etre objectif en exprimant clairement ton probleme, car dans ton precedent code on voit rien de distance ou autre.
    Aucune relation avec le premier post

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    j'ai laissé tombé la Bdd. J'ai rentré en dur les lat et long des POI dans le code, c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    items.add(new OverlayItem(GeoTools.makeGeoPoint(lat,long),"xx", "Descriptif"));
    un item correspond à un point avec un lat et long différent à chaque fois (réels)
    Je récupère la position du téléphone avec deux variables (lat = loc.getLatitude(); et long = loc.getLongitude();).

    Je veux juste afficher les points distants au max de 20kms (par exemple) de ma position.
    J'ai trouvé une solution provisoire en annulant la possibilité de faire un zoom (mapView.setBuiltInZoomControls(false);) et en réglant le mapController.setZoom(15);

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

Discussions similaires

  1. POI dans une appli GWT
    Par NajaChris dans le forum Documents
    Réponses: 0
    Dernier message: 17/11/2011, 15h07
  2. Insertion d'une image dans une feuille excel /POI
    Par Taz_22 dans le forum Documents
    Réponses: 1
    Dernier message: 07/08/2008, 18h38
  3. [POI][Excel] Différents styles dans une cellule
    Par ALEX731 dans le forum Documents
    Réponses: 1
    Dernier message: 07/03/2008, 12h16
  4. Réponses: 2
    Dernier message: 15/05/2006, 09h46

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