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

API standards et tierces Android Discussion :

google maps api v2 et image qui bouge


Sujet :

API standards et tierces Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut google maps api v2 et image qui bouge
    Bonjour tout le monde,

    je suis en train de faire une application qui utilise google maps api v2 pour android.

    J'arrive a me géocaliser sur ma map, aucun soucis. Maintenant j'aimerai qu'une image (une sorte de curseur) bouge aléatoirement autour de ma position, dans un disque re rayon défini, et avec une certaine vitesse.

    Mais je ne sais pas de tout comment m'y prendre...

    La seule chose que j'ai trouvé c'est ce forum : How to animate marker in android map api V2?, mais impossible de faire fonctionner leur code...


    Quelqu'un a une idée ??

    Merci beaucoup

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Points : 54
    Points
    54
    Par défaut
    Il est possible que je dise une grosse bétise mais si tu calcul le cercle autour du point où tu veut afficher ton marqueur, il suffirai de créer un thread dans lequel tu change la position de ton marqueur toutes les 10 millisecondes par exemple.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Tu peux t'inspirer de ces diapos (utilisés lors d'un conf à la Google IO 2013)
    La page 8

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de vos réponses.

    Le probleme c'est que ce thread est vraiment pas facile a coder...

    Pour le code de la conf, il bug un peu, il y a un mHandler qui n'est pas défini.




    J'ai trouvé un autre code fait par google :

    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
    public void animateMarker(final Marker marker, final LatLng toPosition, final boolean hideMarker) {
    	        final Handler handler = new Handler();
    	        final long start = SystemClock.uptimeMillis();
    	        Projection proj = mGoogleMapObject.getProjection();
    	        Point startPoint = proj.toScreenLocation(marker.getPosition());
    	        final LatLng startLatLng = proj.fromScreenLocation(startPoint);
    	        final long duration = 500;
     
    	        final LinearInterpolator interpolator = new LinearInterpolator();
     
    	        handler.post(new Runnable() {
    	            @Override
    	            public void run() {
    	                long elapsed = SystemClock.uptimeMillis() - start;
    	                float t = interpolator.getInterpolation((float) elapsed
    	                        / duration);
    	                double lng = t * toPosition.longitude + (1 - t)
    	                        * startLatLng.longitude;
    	                double lat = t * toPosition.latitude + (1 - t)
    	                        * startLatLng.latitude;
    	                marker.setPosition(new LatLng(lat, lng));
     
    	                if (t < 1.0) {
    	                    // Post again 16ms later.
    	                    handler.postDelayed(this, 16);
    	                } else {
    	                    if (hideMarker) {
    	                        marker.setVisible(false);
    	                    } else {
    	                        marker.setVisible(true);
    	                    }
    	                }
    	            }
    	        });
    	    }
    Mais il y a dans cette ligne :
    Projection proj = mGoogleMapObject.getProjection();

    mGoogleMapObject qui n'est pas défini, quelqu'un voit comment le définir ? et utiliser le code ?

    Merci

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    salut,

    mGoogleMapObject, c'est l'objet de classe GoogleMap qu'on obtient par getMap() sur le Map Fragment ou la Map View...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    mHandler devrait en fait être handler, ils ont du faire une erreur.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de vos réponses,

    j'ai modifié mon code pour que le mGoogleMapObject soit reconnu, maintenant je peux appeler la fonction, mais le marker se retrouve a la destination finale sans aucune transition... Voici mon 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
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    public class TheGame extends Activity {
     
     
     
    	  private static GoogleMap mMap;
    	  static LatLng test = new LatLng(0, 0);
    	  static LatLng test1 = new LatLng(0, 20);
     
     
    	@Override
    	  public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_the_game);
     
            mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
            ;
            Marker melbourne = mMap.addMarker(new MarkerOptions()
                                      .position(test)
                                      .title("title")
                                      .snippet("snippet")
                                      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
     
    		animateMarker(melbourne,test1,false);
     
    	  }
     
     
     
     
    	  public void animateMarker(final Marker marker, final LatLng toPosition, final boolean hideMarker) {
    	        final Handler handler = new Handler();
    	        final long start = SystemClock.uptimeMillis();
     
     
    	        Projection proj = mMap.getProjection();
    	        Point startPoint = proj.toScreenLocation(marker.getPosition());
    	        final LatLng startLatLng = proj.fromScreenLocation(startPoint);
    	        final long duration = 500;
     
    	        final LinearInterpolator interpolator = new LinearInterpolator();
     
    	        handler.post(new Runnable() {
    	            @Override
    	            public void run() {
    	                long elapsed = SystemClock.uptimeMillis() - start;
    	                float t = interpolator.getInterpolation((float) elapsed
    	                        / duration);
    	                double lng = t * toPosition.longitude + (1 - t)
    	                        * startLatLng.longitude;
    	                double lat = t * toPosition.latitude + (1 - t)
    	                        * startLatLng.latitude;
    	                marker.setPosition(new LatLng(lat, lng));
     
    	                if (t < 1.0) {
    	                    // Post again 16ms later.
    	                    handler.postDelayed(this, 16);
    	                } else {
    	                    if (hideMarker) {
    	                        marker.setVisible(false);
    	                    } else {
    	                        marker.setVisible(true);
    	                    }
    	                }
    	            }
    	        });
    	    }
     
     
     
     
     
    	}

    Quelqu'un sait pourquoi il n'y a aucune animation ??

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Essaie de sortir ta méthode du onCreate.
    Par là je veux dire de lancer ta méthode lors d'un clic sur un bouton par exemple, car il se peut que les 500ms d'animation se passent dans le onCreate et ne soient pas visibles...

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci

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

Discussions similaires

  1. google map api
    Par debutantasp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/05/2008, 14h02
  2. Google Map - API Java ?
    Par onlytoine dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/04/2008, 11h25
  3. Utilisation de la Google Maps API ?
    Par [ZiP] dans le forum Web & réseau
    Réponses: 4
    Dernier message: 04/09/2007, 22h26
  4. Google Map API --> Javascript et code behind C#
    Par bridel dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/01/2007, 21h07
  5. google map api
    Par raphs43 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/12/2006, 20h28

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