2015-09-27 1 views
0

Я делаю приложение, которое должно позволить пользователям нарисовать круг поверх карты.Правильно одушевить рисунок круга на MapFragment

Я использовал ответ на this вопрос, чтобы позволить пользователю влачить круг переменного размера с помощью этого сенсорного слушателя:

public void setupListeners(){ 
    frameLayout.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      float x = event.getX(); 
      float y = event.getY(); 

      int x_co = Math.round(x); 
      int y_co = Math.round(y); 

      Projection projection = map.getProjection(); 
      Point x_y_points = new Point(x_co, y_co); 

      LatLng latLng = map.getProjection().fromScreenLocation(x_y_points); 
      double latitude = latLng.latitude; 

      double longitude = latLng.longitude; 

      int eventaction = event.getAction(); 
      switch (eventaction) { 
       case MotionEvent.ACTION_DOWN: 
        Log.d("dero", "Started drawing marker at: "+latLng.toString()); 
        mStartDraw = latLng; 
        break; 
       case MotionEvent.ACTION_MOVE: 
        //Log.d("dero", "Finger moved to: "+latLng.toString()); 
        // finger moves on the screen 
        float[] distRes = new float[1]; 
        Location.distanceBetween(mStartDraw.latitude, mStartDraw.longitude, latLng.latitude, latLng.longitude, distRes); 
        map.clear(); 
        drawMusicMarker(mStartDraw, distRes[0]); 
        break; 
       case MotionEvent.ACTION_UP: 
        Log.d("dero", "Circle finished at: "+latLng.toString()); 
        mStartDraw = null; 
        mMapMovable = true; 
        return true; 
      } 

      return !mMapMovable; 
     } 
    }); 

Это работает достаточно хорошо, и я могу вытаскивать круги на карте когда бы я ни за Хотел. Однако из-за того, что я должен вызывать .clear() каждый раз, когда пальцы пользователей перемещаются, кружок мерцает, как сумасшедший при рисовании. Есть ли способ правильно анимировать круг без использования .clear()?

ответ

0

По-видимому, проблема связана с кругами на картах, если вы используете цвет заливки (Issue).

Лучший способ, которым я нашел анимацию, - захватить объект круга, возвращенный добавлением круга на карту, и изменить его радиус, и только заполнить его, как только перетаскивание будет завершено.