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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    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
    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
    [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 : 41
    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
    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 ?

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    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
    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
    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 averti
    Inscrit en
    Mai 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 23
    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...

+ 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, 14h07
  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, 17h38
  3. [POI][Excel] Différents styles dans une cellule
    Par ALEX731 dans le forum Documents
    Réponses: 1
    Dernier message: 07/03/2008, 11h16
  4. Réponses: 2
    Dernier message: 15/05/2006, 08h46

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