0

次のコードを使用して MAP (Google API) を表示しています。ユーザーがマップ上の任意の場所をクリックしたときにズームしたいです。どうすれば達成できますか?

public class TourMapActivity extends MapActivity {


@Override
protected void onCreate(Bundle arg0) {

    super.onCreate(arg0);

    setContentView(R.layout.tour_map);
    mMapView = (MapView)findViewById(R.id.MapView);
    mMapView.setBuiltInZoomControls(true);
    mMapView.getZoomButtonsController().setVisible(true);




}


@Override
protected boolean isRouteDisplayed() {

    return true;
}

class CustomOverlay extends ItemizedOverlay<CustomItem> {

    protected ArrayList<CustomItem> mOverlays = new ArrayList<CustomItem>();
    public OnTapListenerIndex mOnTapListenerIndex = null;
    private Context mContext;

    public CustomOverlay(Drawable defaultMarker) {
        super(boundCenterBottom(defaultMarker));
    }


    public CustomOverlay(Drawable defaultMarker, Context context)
    {
        super(boundCenterBottom(defaultMarker));
        mContext = context;
    }

    @Override
    protected CustomItem createItem(int i) {
        return mOverlays.get(i);
    }

    @Override
    public int size() {
        return mOverlays.size();
    }

    public void addOverlay(CustomItem overlay) {
        mOverlays.add(overlay);
        populate();
    }

    public void addOverlay(CustomItem overlay, Drawable marker) {
        overlay.setMarker(boundCenterBottom(marker));
        addOverlay(overlay);
    }

    @Override
    public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow) {
        super.draw(canvas, mapView, false);
    }




}

public interface OnTapListenerIndex {

    public void onTapEvent(int index, OverlayItem overlayItem);
}

}

ユーザーが地図上の任意の場所をダブルクリックしたときにズームしたい。どうすれば達成できますか?

4

1 に答える 1

0

これを見てください: https://stackoverflow.com/a/12646465/1885518またはhttp://nocivus.posterous.com/double-clicktap-detection-on-a

要するにオーバーライドonInterceptTouchEvent()

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    if (ev.getAction() == MotionEvent.ACTION_DOWN) {

        long thisTime = System.currentTimeMillis();
        if (thisTime - lastTouchTime < 250) {

            // Double tap
            this.getController().zoomInFixing((int) ev.getX(), (int) ev.getY());
            lastTouchTime = -1;

        } else {
            lastTouchTime = thisTime;
        }
   }
}
于 2012-12-07T15:05:37.227 に答える