2016-03-09 3 views
0

Я пытаюсь реализовать функцию, где, если вы перетаскиваете карту, она пытается сопоставить ее с ранее определенными точками. В моем приемнике Touch я пытаюсь сравнить с точками LatLng. Однако ни один из моих журналов не печатает, что есть совпадение. Вы можете не сравнить значения в ACTION_MOVEСоответствующие точки LatLng, когда ACTION_MOVE

@Override 
public boolean onTouch(View v, MotionEvent event) { 
     float x = event.getX(); 
     float y = event.getY(); 

     Point x_y_points = new Point(Math.round(x), Math.round(y)); 

     LatLng dragPoint = map.getProjection().fromScreenLocation(x_y_points); 

     int eventaction = event.getAction(); 

     switch (eventaction) { 
      case MotionEvent.ACTION_MOVE: 
        for (int i = 0; i < markers.size(); ++i) { 
         LatLng temp = markers.get(i).getPosition(); 

         if (dragPoint.latitude == temp.latitude && temp.longitude == dragPoint.longitude) { 
          Toast.makeText(getApplicationContext(), "Match", Toast.LENGTH_SHORT).show(); 
         } 

         Log.d("Point: ", temp.toString()); 

         if (dragPoint == markers.get(i).getPosition()) { 
          Log.d("Match: ", "Yes"); 
         } 
        } 

        break; 
      } 

     return true; 
} 

ответ

0

Попробуйте установить в onClickListener, а также сенсорный слушателя. В нем нет необходимости обрабатывать какие-либо операции, но по какой-то причине событие ACTION_MOVE будет срабатывать только при переопределении функции onClick.

@Override 
public void onClick(View v) { } 

Сообщите мне, если это сработает для вас!

+0

Итак, добавьте onClick в оператор switch? –

+0

Добавьте его параллельно с OnTouch, поэтому он должен находиться под вашей функцией OnTouch. По какой-то причине это необходимо, когда вы пытаетесь поймать событие ACTION_MOVE. –

Смежные вопросы