2015-09-27 112 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),地圖上的圓圈顯然存在問題。

我發現爲它設置動畫的最佳方式是通過向地圖添加圓並返回其半徑並在拖動完成後僅填充該圓對象。