2010-08-31 16 views
4

J'ai vu quelques questions à ce sujet, mais aucune réponse solide.Mise à l'échelle des marqueurs Android MapView lorsqu'un utilisateur effectue un zoom avant/arrière

J'ai un MapView qui peut générer jusqu'à 1600 emplacements sur la carte, en fonction de la distance à laquelle l'utilisateur effectue un zoom avant ou arrière. A partir de maintenant, j'ai mon marqueur simplement mis à un drawable dans ma demande. Comment puis-je détecter si un utilisateur a fait un zoom avant/arrière, puis mettre à l'échelle le marqueur en conséquence. Je ne suis pas concerné par la partie mise à l'échelle, mais par la partie d'écoute du zoom. Est-ce que quelqu'un a développé une solution à ce petit problème, ou peut me diriger dans la bonne direction pour créer le mien?

Aussi, autant que je sache, il n'y a pas de marqueur par défaut qu'offre Android. Ai-je raison à ce sujet? Ce serait bien si Android avait un marqueur intégré qui gère la mise à l'échelle en fonction des niveaux de zoom pour vous.

Répondre

1

Voici une discussion sur les événements de zoom, ce qui devrait vous aider: On zoom event

espère que cela aide

0

Les marqueurs ne changent pas la taille en fonction de zoom. Utilisez GroundOverlays si vous désirez cet effet. src

GoogleMap map = ...; // get a map. 
BitmapDescriptor image = ...; // get an image. 
LatLngBounds bounds = ...; // get a bounds 
// Adds a ground overlay with 50% transparency. 
GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions() 
    .image(image) 
    .positionFromBounds(bounds) 
    .transparency(0.5)); 

Un revêtement de sol est une image qui est fixée à une carte et échelles avec le zoom de la carte. S'il vous plaît voir le API pour plus d'infos

Voir poste lié: Scale Map Markers by Zoom, Android

0

I'am utiliser

LatLng latLng = new LatLng(-16.50881576338701,-68.13492067606603); 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.raw.ic_car_1); 
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(bitmap); 
     googleMap.addGroundOverlay(new GroundOverlayOptions() 
      .image(bitmapDescriptor) 
      .position(latLng,100)); 

Les docs dans google maps docs GroundOverlayOptions