1

J'utilise un MapView (google) et j'ajoute quelques superpositions dessus. -je utiliser ma propre classe de superposition qui ressemble à ceci:événement onTap (int i) sur ItemizedOverlay <OverlayItem> incendies pour seulement 1 article

public class MyOverlay extends ItemizedOverlay<OverlayItem> 

Quand je effectuer un zoom arrière et la cause tous mes articles soient au même endroit et appuyez sur l'image, je reçois l'événement onTap pour seulement 1 sur tous les articles qui sont à l'endroit engagé. Je veux être en mesure d'obtenir l'événement onTap pour chaque élément qui est sous l'emplacement sur la carte sur laquelle j'appuie, ou soit une capacité à demander à la carte pour tous les éléments d'un rectangle spécifique où j'appuie.

ceci est mon code pour le débogage:

@Override 
protected boolean onTap(int i) 
{     
    super.onTap(i); 
    return false;   
} 

et obtenir seulement 1 robinet pour chaque superposition.

Est-ce possible? Comment?

Merci.

Répondre

0

Une façon est la suivante: (Notez que ce code est pseudo)

// Over ride the onTouchEvent 
    @Override 
    public boolean onTouchEvent(MotionEvent event, final MapView mapView) { 
     final int action=event.getAction(); 
     final int x = (int)event.getX(); 
     final int y = (int)event.getY(); 
     if (action == MotionEvent.ACTION_DOWN) { 
     // get the zoom level 
     zoomLevel = mapView.getZoomLevel(); 

     if(zoomLevel > appropriateZoom) 
     { 
       if(items != null) { 
       for(int i = 0; i < items.size(); i++){ 
        OverlayItem item = items.get(i); 
        Point mp = new Point(0,0); 
        mapView.getProjection().toPixels(item.getPoint(), mp); 
        xDragTouchOffset=x-mp.x; 
        yDragTouchOffset=y-mp.y; 
        if (hitTest(item, marker, x-(mp.x-(xDragImageOffset+xDragTouchOffset*2)), y-(mp.y-((yDragImageOffset/2)+yDragTouchOffset)))) { 
        // This item has been tapped. Do what you want here. 
     } 

     } 

Ceci est seulement une idée/indice pour vous aider à démarrer.

+0

n'est-il pas possible à certains comment inscrire à onTap de chaque OverlayItem? ce sera probablement mieux que de commencer à calculer des situations de zoom .... – iAndroid

+0

OverlayItem ne supporte pas onTap, mais [Overlay] (http://code.google.com/android/add-ons/google-apis/reference/com /google/android/maps/Overlay.html) fait. – Reno

Questions connexes