GoogleマップフラグメントのonDrag Listenerをセットアップしようとしていますが、起動するドラッグイベントを取得できません。マップはドラッグイベントを直接サポートしていないため、ビューのドラッグリスナーを実装しようとしています。 onMarkerDragイベントについて知っていますが、マーカーを移動しようとしているわけではないので、それは良くありません。Googleマップv2フラグメントのOnDragListenerの作成
マップのドラッグイベントをトラップする理由は2つあります。ユーザーがマップをパンした場合
最初に検出します。表示されていない場合は、画面上にその位置を保持し、地図上にない場合はその位置にアニメーション表示するのが好きです。彼らが地図をパンした場合、私は彼らが見たいものを知っていて、画面上の場所を強制すると思います。 (これはAPIに含める必要があるようです)
トラッピングの第2の理由は、マップ上に線やポリゴンを描画できるようにするためです。私はonTapイベント(ポイントを追加する)でこれを行うことができますが、私もそれらを自由に手放すことができるようにしたいと思います。
mainActivity:
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
setUpMapIfNeeded();
mMapView = findViewById(R.id.map);
myMapDragListener = new MapDragListener();
mMapView.setOnDragListener(myMapDragListener);
リスナー:
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;
}
}
マップが正常に動作します
私のコードは次のようになります。リスナーはインスタンス化しますが、onDragイベントは発生しません。何か案は?
あなたがマーカーをドラッグについて話している場合、v2は確かにドラッグリスナーを持っています。 'onMarkerDragListener'を実装してください – tyczj
@tyczjマーカーをドラッグするのではなく、マップ全体をパンします。 Tim:マップがイベントを消費するため、これは機能しません。あなたの質問を更新し、達成したいことを言いなさい、おそらくは解決策を見つけることができます。 –