Событие onTap (int i) для ItemizedOverlay <OverlayItem>запускается только для 1 элемента - PullRequest
1 голос
/ 19 октября 2011

Я использую MapView (Google) и добавляю на него несколько оверлеев. Я использую свой собственный класс наложения, который выглядит следующим образом:

public class MyOverlay extends ItemizedOverlay<OverlayItem>

Когда я уменьшаю масштаб и заставляю все мои предметы находиться в одном месте и нажимаю на изображение, я получаю событие onTap только для 1 из всех предметов, которые находятся в повернутом месте.

Я хочу иметь возможность получать событие onTap для каждого элемента, находящегося под местоположением на карте, на которое я нажимаю, или возможность запрашивать карту для всех элементов в определенном прямоугольнике, где я нажимаю.

это мой код для отладки:

@Override
protected boolean onTap(int i)
{                
    super.onTap(i);
    return false;           
}

и получите только 1 нажатие на каждое наложение.

Возможно ли это? как?

Спасибо.

1 Ответ

0 голосов
/ 19 октября 2011

Один из способов заключается в следующем: (обратите внимание, что это псевдокод)

   // Over ride the onTouchEvent
   @Override
    public boolean onTouchEvent(MotionEvent event, final MapView mapView) {
        final int action=event.getAction();
        final int x = (int)event.getX();
        final int y = (int)event.getY();
        if (action == MotionEvent.ACTION_DOWN) {
        // get the zoom level 
        zoomLevel = mapView.getZoomLevel();

        if(zoomLevel > appropriateZoom)
        {
              if(items != null) {
                for(int i = 0; i < items.size(); i++){
                    OverlayItem item = items.get(i);
                    Point mp = new Point(0,0);
                    mapView.getProjection().toPixels(item.getPoint(), mp);
                    xDragTouchOffset=x-mp.x;
                    yDragTouchOffset=y-mp.y;
                    if (hitTest(item, marker, x-(mp.x-(xDragImageOffset+xDragTouchOffset*2)), y-(mp.y-((yDragImageOffset/2)+yDragTouchOffset)))) {
                   // This item has been tapped. Do what you want here. 
         }

        }

Это всего лишь идея / подсказка для начала.

...