ItemizedOverlayが重なっている

2011年12月15日

MapView上においたItemizedOverlayのonTap()イベントは、ひとつづつイベントが発生し、重なっているかどうかわからずどうにも使いづらい。こんな感じで認識できたので、メモしておく。onTap()をオーバーライドして実現。

@Override
protected boolean onTap(int index)
{

    OverlayItem tapedItem = getItem(index);

    // 複数重なっているかどうかのチェック
    android.graphics.Point itemPoint = map_.getProjection().toPixels(tapedItem.getPoint(), null);

    ArrayList<OverlayItem>  hitItemList = new ArrayList<OverlayItem>();

    for( OverlayItem item : overlay_items_ )
    {
        android.graphics.Point targetPoint = map_.getProjection().toPixels(item.getPoint(), null);

        int height  = mark_.getIntrinsicHeight() / 2;
        int width   = mark_.getIntrinsicWidth() / 2;

        int left    = itemPoint.x - width;
        int right   = itemPoint.x + width;
        int top     = itemPoint.y - height;
        int bottom  = itemPoint.y + height;

        if( (left <= targetPoint.x && targetPoint.x <= right) &&
            (top <= targetPoint.y && targetPoint.y <= bottom) )
        {
                hitItemList.add(item);
        }
    }

    if( hitItemList.size() <= 1 )
    {
        // タップしたのが一個以下のとき
        // 上位のonTapを呼び出す
        // 仮にも、onTapイベントで飛んできてるので、0はまずありえないと思う
        super.onTap(index);
    } else {
        Log.d("onTap", "重なりあり");
        for( OverlayItem item : hitItemList )
        {
            Log.d( "onTap", item.getTitle() );
        }
    }

    return true;
}

ItemizedOverlayにはhitTestというメソッドがあるので、本来はそっちを使ったほうがよさそうなんですが、使い方がよくわからなかったので、力技です。一応動いているのでよしとします。

Android | majin | 18:05 | Comments (0)

ListViewにCheckBoxを乗っけたかった。

2011年12月8日

普通にやると、なぜかListViewのクリックイベントがとれなくなります。
そこで、CheckBoxのレイアウトに

        <CheckBox
           android:id="@+id/checkBox1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentRight="true"
           android:focusable="false"
           android:layout_alignParentTop="true" />

android:focusable=”false”をつけてやればOKのようです。どうも乗っけたCheckBoxがフォーカスを乗っ取ってしまってどうにも鳴らなくなってた模様。こんな簡単な解決があることを知るのにすごく時間がかかってしまった。

Android | majin | 16:20 | Comments (0)
Copyright © MAJIN_T
Powered by WordPress