Création de OnDragListener pour Google Map v2 Fragment

Je suis en train de configurer un onDrag Écouteur pour une carte google fragment, mais ne peut pas obtenir l'événement glisser à feu. Depuis que la carte ne prend pas en charge les événements de glisser directement, je suis en train de mettre en œuvre un glisser auditeur pour la Vue. Je sais que sur le onMarkerDrag événement, mais qui ne me fait pas de bien, car je ne suis pas en train de déplacer les marqueurs de autour de.

La raison pour le recouvrement de la carte de déplacer des événements est double:

D'abord de détecter si l'utilisateur a éreinté la carte. Si elles n'ont pas, je tiens à garder leur emplacement sur l'écran, et d'animer à leur emplacement, si ce n'est pas sur la carte. Si ils ont décalé la carte, je suppose qu'ils savent ce qu'ils veulent voir et à force de l'emplacement sur l'écran. (cela semble être quelque chose qui devrait être inclus dans l'API)

La deuxième raison pour le piégeage est de permettre aux utilisateurs de dessiner des lignes et des polygones sur la carte. Je peux le faire avec onTap événements(en ajoutant des points), mais j'aimerais être en mesure de les laisser à main levée.

Mon code ressemble à ceci:

mainActivity:

    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    setUpMapIfNeeded();
    mMapView = findViewById(R.id.map);
    myMapDragListener = new MapDragListener();
    mMapView.setOnDragListener(myMapDragListener);

De L'Auditeur:

public class MapDragListener implements OnDragListener {
    /**
     * 
     */
    public MapDragListener() {
        super();
        say.logCat("MapDragListener: I'm ALIVE!!!!");
    }

    private AkamaiAnnounce say = new AkamaiAnnounce();
    private boolean inDrag;
    private boolean hasPanned=false;

    @Override
    public boolean onDrag(View v, DragEvent event) {
        say.logCat("MapDragListener.onDrag: " + event.toString());
        //String dotTAG = (String) getTag();
        if (event.getLocalState() != this) {
          return false;
        }
        boolean myResult = true;
        int action = event.getAction();
        float x = event.getX();
        float y = event.getY();
        switch (action) {
        case DragEvent.ACTION_DRAG_STARTED:
          inDrag = true;
          break;
        case DragEvent.ACTION_DRAG_LOCATION:
          break;
        case DragEvent.ACTION_DRAG_ENTERED:
          break;
        case DragEvent.ACTION_DRAG_EXITED:
          break;
        case DragEvent.ACTION_DROP:
          myResult = false;
          break;
        case DragEvent.ACTION_DRAG_ENDED:
          inDrag = false; //change color of original dot back
          hasPanned=true;
          break;
        default:
          myResult = false;
          break;
        }
        return false;
        //return myResult;

    }

    public boolean hasPanned() {
        return hasPanned;
    }

    public void setHasPanned(boolean hasPanned) {
        this.hasPanned = hasPanned;
    }

}

La carte fonctionne très bien. L'auditeur instancie, mais mon onDrag événement se déclenche jamais. Des idées?

source d'informationauteur Tim