伊藤様
ご教授ありがとうございます。
伊藤様のソースをヒントに少し改良を加えてみまして実装できました。
画面長押しを検知してその状態でドラッグするとアイコンが指の位置
drawPointAddressに描画します。onTouchEventの中でsetCenter
で画面タッチ時の中心座標に設定していますが、これは不要でした。
super.onTouchEvent(event, mapView);を実行せずにtrueを返せば
MapViewのスクロールは行なわれないことがわかりました。
class MapDraw extends Overlay implements
GestureDetector.OnGestureListener{
…
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView){
gesture.onTouchEvent(event);
if(event.getAction() == MotionEvent.ACTION_DOWN){
}
else if(event.getAction() == MotionEvent.ACTION_MOVE){
if(longPressFlg == true){
touchCenterPoint = mapView.getMapCenter();
drawPointAddress =
mapView.getProjection().fromPixels((int)event.getX(),
(int)event.getY());
mapView.invalidate();
}
}
else if(event.getAction() == MotionEvent.ACTION_UP){
longPressFlg = false;
touchCenterPoint = null;
}
if(touchCenterPoint != null){
mapController.setCenter(touchPoint);
return true;
}
return super.onTouchEvent(event, mapView);
}
@Override
public void onLongPress(MotionEvent e) {
longPressFlg = true;
}
}
大変参考になりました。また何かありましたらよろしくお願い致します。