Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
332 L’art du développement Android
Couches sur couches
Si vous avez déjà utilisé la version complète de Google Maps, vous avez sûrement déjà vu
que l’on pouvait déposer des choses sur la carte elle-même : les "repères", par exemple,
qui indiquent les emplacements des points d’intérêt proches de la position que vous avez
demandée. En termes de carte – et également pour la plupart des éditeurs graphiques
sérieux –, ces repères sont placés sur une couche distincte de celle de la carte elle-même et
ce que vous voyez au final est la superposition de ces deux couches.
Android permet de créer de telles couches, afin de marquer les cartes en fonction des choix
de l’utilisateur et des besoins de votre application. NooYawk, par exemple, utilise une
couche pour montrer les emplacements des immeubles sélectionnés dans Manhattan.
Classes Overlay
Toute couche ajoutée à votre carte doit être implémentée comme une sous-classe d’Overlay.
Si vous voulez simplement ajouter des repères, vous pouvez utiliser la sous-classe ItemizedOverlay, qui vous simplifiera la tâche.
Pour attacher une couche à votre carte, il suffit d’appeler la méthode getOverlays() de
votre objet MapView et d’ajouter votre instance d’Overlay avec add() :
marker.setBounds(0, 0, marker.getIntrinsicWidth(),
marker.getIntrinsicHeight());
map.getOverlays().add(new SitesOverlay(marker));
Nous expliquerons un peu plus loin le rôle de marker.
Affichage d’ItemizedOverlay
Comme son nom l’indique, ItemizedOverlay permet de fournir une liste de points d’intérêt (des instances d’OverlayItem) pour les afficher sur la carte. La couche gère ensuite
l’essentiel du dessin pour vous, mais vous devez toutefois effectuer les opérations
suivantes :
● Dérivez votre sous-classe (SitesOverlay, dans notre exemple) d’ItemizedOverlay.
● Dans le constructeur, mettez en place la liste des instances OverlayItem et appelez
populate() lorsqu’elles sont prêtes à être utilisées par la couche.
● Implémentez size() pour qu’elle renvoie le nombre d’éléments qui devront être gérés
par la couche.
● Redéfinissez createItem() pour qu’elle renvoie l’instance OverlayItem correspondant
à l’indice qui lui est passé en paramètre.
Livre Android.book Page 332 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 347/391

Suivant