Могу ли я сделать onTap, который не требует длинного нажатия, но при этом для других событий включена поддержка длинного нажатия?

1

В настоящее время у меня есть серия маркеров на карте google. Я хочу иметь возможность получить широту и долготу из любого места, где я долгое время на карте, и я хочу открыть диалоговое окно с сообщением, когда я быстро нажимаю на маркер. Моя проблема заключается в том, что, устанавливая longpress для работы, он делает так, чтобы моя функция onTap вызывалась только при длительном нажатии. Можно ли работать с longlick только тогда, когда я не нажимаю на маркер?

@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) 
{   

    return gestureScanner.onTouchEvent(event);
    //return false;
} 

////////////////////////////////////
// Handle the clicking of a marker
// 
////////////////////////////////////
@Override
protected boolean onTap(int index) 
{
    System.out.println("OnTap");
    OverlayItem item = mOverlays.get(index);
    int localLat = item.getPoint().getLatitudeE6();
    int localLong = item.getPoint().getLongitudeE6();
    AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
    // Get the titles
    dialog.setTitle(item.getTitle());

    // Get the text for the message
    //dialog.setMessage(item.getSnippet());
    dialog.setMessage("Latitude: " + localLat + "\nLongitude: " + localLong);
    dialog.setNeutralButton("Ok", new DialogInterface.OnClickListener() 
    {   
        public void onClick(DialogInterface dialog, int which) 
        {
            // TODO Auto-generated method stub      
        }
    });
    dialog.show();
    return true;
}

 @Override
public void onLongPress(MotionEvent e)
{
    long downTime = e.getDownTime();
    System.out.println("Down time: " + downTime);
    System.out.println("LongPress Registered");
    GeoPoint p = localMapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
    System.out.println("Latitude = " + p.getLatitudeE6() + " Longitude: " + p.getLongitudeE6());
}
Теги:
google-maps
long-click

1 ответ

0

Здесь что-то похожее здесь, что может быть полезно. Вы также можете переопределить onTouchEvent() наложения, чтобы обрабатывать каждый.

  • 0
    Я переопределяю onTouchEvent (), но это для настройки GestureDetector. Есть ли способ, чтобы событие onTap по-прежнему происходило естественным образом? Все это основано на ItemizedOverlay. Отправка кода в секунду для лучшей концепции.
  • 0
    Как насчет перемещения LongPress к другому Overlay, который просто обрабатывает это, так как кажется, что он просто отображает нажатые координаты. Вы можете иметь более одного оверлея за раз. Вы можете просто использовать GestureDetector.SimpleOnGestureListener - вам потребуется только реализовать метод LongPress, и вы можете удалить GestureDetector из ItemizedOverlay.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню