Ajouter des markers personnalisés à partit d'un layout animé

Le problème exposé dans ce sujet a été résolu.

Bonjour !

Je viens vers car cela fait depuis plusieurs jours que je recherche une solution à un problème bien particulier : afficher un marker personnnalisé à partir d’un layout animé (sur une carte). Le problème se trouve dans le fait que seulement une partie du layout est animé.

Je me suis d’abord penché vers Google Maps. Le problème est que chaque custom marker se défini comme cela :

1
2
3
googleMap.addMarker(new MarkerOptions().position(position)
            .title("name")
            .icon(BitmapDescriptorFactory.fromBitmap(myBitmap)));

Je suis donc obligé de fournir un Bitmap. A la limite je pourrais convertir mon layout en un Bitmap (cela n’est pas un problème), mais Google ne propose que d’animer l’ensemble du Bitmap (alors que j’ai seulement une partie qui doit rotationner!). Une des solutions que j’ai envisagé est de créer une fonction qui retournerai à intervalle de temps régulier un Bitmap différent (toutes les 100 ms, ce qui recréerai la sensation d’animation). Mais cette solution est du gros bricolage et doit consommer beaucoup de ressources pour pas grand chose…

Du coup, j’ai regardé des solutions alternatives (principalement basées sur OpenStreetMap). J’en ai regardé quelques une comme http://mousebird.github.io/WhirlyGlobe/ mais encore une fois il s’agit uniquement de fournir un Bitmap…

Merci (beaucoup) d’avance :)

Salut !

Oui pardon je suis pas assez précis. Il s’agit d’intégrer la carte dans une application Android. Le Layout est donc un layout Android (un RelativeLayout pour être plus précis). Il est animé à l’aide de la fonction startAnimation().


Une des autres solutions auxquels je viens de penser, serait de décomposer le layout en deux parties :

  • Une partie qui doit rotationner
  • La partie fixe

Puis on transforme ces deux parties en BitMap, on ajoute les deux markers à la même position et on anime entièrement (à l’aide de la fonctionnalité) de Google Maps la partie qui doit rotationner. Mais encore une fois, cela est du bricolage et me forcerai à "amocher l’animation" car il ne s’agit pas uniquement d’une rotation en soit.

Merci pour vos réponses! Voici une petite vidéo du "layout animé" que je souhaite définir comme Google Maps marqueur :

le layout animé ne comprend que l’image orange et le cercle bleu qui tourne autour.

Le problème avec Google Maps c’est que l’on ne peut définir qu’un Bitmap pour personnaliser son marqueur… https://developers.google.com/maps/documentation/android-api/marker

La solution de convertir le "layout animé" en une succession de Bitmaps semblait pas mal, mais elle doit consommer beaucoup de ressources pour une simple animation, surtout que je n’ai pas qu’un marqueur à afficher sur cette carte :(

Du coup, existe-t-il une solution que je n’ai pas trouvé ? Il faut peut-être que je me sépare de Google Maps ? Pour quelle autre solution ?

Merci d’avance :)

Merci pour les liens mais il s’agit d’articles utilisant du JavaScript alors qu’une solution native pour Android serait préférable…

Le gif peut-être une bonne alternative mais encore une fois il faut que je convertisse le layout animé en un gif, ce qui demande beaucoup de temps et de ressources :(

Après avoir trouvé quelques applications qui faisaient ce que je souhaitais à peu près, j’ai fini par trouver une bonne solution : il faut utiliser des TileOverlay, c’est à dire positionner des formes dynamiquement sur la carte à l’aide des formes proposées comme circle, polygon… (https://developers.google.com/android/reference/com/google/android/gms/maps/model/TileOverlay. Après, je pense qu’il suffit pour la photo de l’utilisateur de l’ajouter par un simple Marker.

Très clairement, cela semble assez "galère" à utiliser. Qu’est-ce qu’on ne fait pas pour une animation franchement ? :lol:

Sujet résolu donc !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte