2015-09-27 111 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),地图上的圆圈显然存在问题。

我发现为它设置动画的最佳方式是通过向地图添加圆并返回其半径并在拖动完成后仅填充该圆对象。