2012-11-24 48 views
2

我想用我的手指在谷歌地圖上繪製覆蓋圖。 我已經完成了這條線的繪製.. 但地圖也隨着我的手指移動,所以我不能畫得很好,因爲當地圖也移動時,我可以在我的手指周圍繪製一個小圓圈...安卓地圖禁用移動

如何禁用地圖的移動(拖動)並仍然能夠用手指繪製並顯示覆蓋圖?

我當前的代碼看起來是這樣的:

public class OverlayMap extends Overlay { 
    private List<MapGeoLine> geoLines = new ArrayList<MapGeoLine>(); 
    private List<GeoPoint> geoPoints; 
    private boolean isTouched = false; 

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

     if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){ 
      geoPoints = new ArrayList<GeoPoint>(); 
      geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY())); 
      isTouched = true; 
     } 

     if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){ 
      if(isTouched){ 
       geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY())); 
      } 
     } 

     if(motionEvent.getAction() == MotionEvent.ACTION_UP){ 
      if(isTouched){ 
       geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY())); 
      }   
      isTouched = false; 
     } 

     return super.onTouchEvent(motionEvent, mapView); 
    } 

    @Override 
    public void draw(Canvas canvas, MapView mapView, boolean shadow) { 

     if(geoPoints != null && geoPoints.size() > 1 && !isTouched){ 
      Paint mPaint = new Paint(); 
      mPaint.setStrokeWidth(2); 
      mPaint.setStyle(Paint.Style.STROKE); 
      mPaint.setAntiAlias(true); 

      Projection projection = mapView.getProjection(); 

      Point from = new Point(); 
      Point to = new Point(); 
      Path p = new Path(); 

      projection.toPixels(geoPoints.get(0), from);    

      for(int i = 1; i < geoPoints.size(); i++){   
       projection.toPixels(geoPoints.get(i), to); 
       p.moveTo(from.x, from.y); 
       p.lineTo(to.x, to.y); 
       from.set(to.x, to.y);    
      } 

      canvas.drawPath(p, mPaint); 
      mapView.invalidate(); 
     } 

     super.draw(canvas, mapView, shadow); 
    } 

} 
+0

此問題與Google Maps API V3無關。 (標記刪除) – Marcelo

回答

0

你需要,當你處理MotionEvent,不希望它被任何其他人進行處理,以從onTouchEvent()返回true。

否則您將返回false,並且該事件將由MapView進行處理,從而導致地圖移動。

問候。

+0

它不適用於我的情況,請你幫我。 [看我的問題和答案](http://stackoverflow.com/questions/20901141/how-to-draw-free-hand-polygon-in-google-map-v2-in-android/20916931#20916931) –