Passation de Commandes de Zoom dans une MapView
Je vais essayer d'obtenir les commandes de zoom pour afficher dans un mapview
, le code suivant fonctionne presque, mais les commandes de zoom apparaissent en haut à gauche de la mapview
, pas la centre en bas comme je suis à la spécification via setGravity()
. Quelqu'un peut-il m'éclairer sur ce que je suis absent?
zoomView = (LinearLayout) mapView.getZoomControls();
zoomView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT));
zoomView.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
mapView.addView(zoomView);
Ces views/layouts sont tous construits de la programmation, il n'y a pas de fichier de mise en page à modifier.
- s'il vous plaît accepter cette réponse qui fonctionne le mieux pour vous!
Vous devez vous connecter pour publier un commentaire.
Ajouter la ligne suivante à la
OnCreate()
méthode de votreMapView
Classe:view.setBuiltInZoomControls(true);
L'astuce ici est de placer un autre conteneur de Mise en forme où vous souhaitez placer le ZoomControls puis insérez le ZoomControls dans que.
Le vrai truc est d'utiliser le
RelativeLayout
plutôt queLinearLayout
pour positionner les éléments, comme illustré dans cet exemplelayout.xml
:La layout_zoom LinearLayout élément est placé dans la partie centrale inférieure de l'écran, en plaçant sur le milieu/bas de la
MapView
.Puis, à l'intérieur de votre Activité
onCreate
, obtenir une référence à l' layout_zoom élément et insérer le ZoomControl en elle, comme vous l'avez déjà fait:La ZoomControls devrait maintenant apparaître sur un clic long, sans voler la carte des événements tactiles.
Le ci-dessus ne fonctionne pas pour moi, mais ce n' (à placer le contrôle en bas à droite):
Reto : merci pour votre réponse, mais l'idée était de faire sans à l'aide de XML mises en page.
Finalement, j'ai travaillé sur le problème. Parce qu'une MapView est une sous-classe de ViewGroup, vous pouvez facilement ajouter des vues enfants (comme les contrôles de zoom). Tous vous avez besoin est une MapView.LayoutParams instance et vous êtes bon pour aller. J'ai fait quelque chose comme ceci (met commandes de zoom en bas, au centre de la mapview).
de la google groupes thread j'ai trouvé ceci:
ZoomControls sans XML:
a été de 100% de travail pour moi avec SDK1.1
Malheureusement je ne peux pas ajouter un commentaire à Jason Hudgins solution approuvée à partir de 28 Nov à 6:32, mais j'ai eu une petite erreur avec son code:
Dans cette ligne:
L'erreur Eclipse m'a donné était
au lieu de cela, la création d'une nouvelle MapView.LayoutParams objet fixe, comme ceci:
Il m'a fallu un certain temps pour trouver, comme je suis un n00b 😀
Vous pouvez essayer ceci:
Reto - le problème de l'utilisation de FILL_PARENT est que la commande de zoom puis sur "vole" de tous les événements tactiles, de sorte que vous ne pouvez pas pan de la carte tandis que les commandes de zoom sont visibles. Savez-vous comment faire pour éviter cela?