2013-01-13 21 views
0

我想擴展/子類ShapeDrawable。結果真的很令人困惑。我的簡單代碼應該創建一個小點,也是一個小三角形。事實上,這些形狀確實出現在地圖視圖上,它們在哪裏繪製。然而,第二個三角形的形狀也有所不同,我不知道這是爲什麼。爲什麼我的ShapeDrawable子類會創建一個額外的三角形?ShapeDrawable子類被幽靈鬼三角鬧鬼

示例屏幕截圖--- >>http://www.activemetrics.com/DrawableProb.png

private class CustomDrawable extends ShapeDrawable 
    { 
     public CustomDrawable() //GeoPoint point, MapView mapView) 
     { 
     } 

     public void draw(Canvas canvas) 
     { 
      canvas.drawCircle(0, 0, 2/*radius*/, getPaint()); 
      Paint paint = new Paint(); 
      paint.setStyle(Paint.Style.STROKE); 
      paint.setStrokeWidth(2); 
      paint.setColor(Color.RED); 
      Path path = new Path(); 
      path.reset(); 
      path.moveTo(0, -10); 
      path.lineTo(5, 0); 
      path.lineTo(-5, 0); 
      path.close(); 
      path.offset(10, 40); 
      canvas.drawPath(path, paint); 
     } 
    } 

回答

0

我想也許這個問題太難了。也許在這個小類之外的某個地方出了問題。 (但是奇怪的是,這個鬼三角形在這裏通過刪除繪圖邏輯而消失了,而且確實發生了。)無論如何,我已經獲得了更好的體驗,只需將一個疊加層添加到mapview中,然後重載draw方法...

private class MapOverlay extends com.google.android.maps.Overlay 
    { 
     @Override 
     public boolean draw(Canvas canvas, MapView mapView, 
     boolean shadow, long when) 
     { 
      super.draw(canvas, mapView, shadow); 

      Bitmap bmp = BitmapFactory.decodeResource(
        getResources(), R.drawable.ic_launcher); 

      //---translate the GeoPoint to screen pixels--- 
      Point screenPts1 = new Point(); 
      mapView.getProjection().toPixels(p1, screenPts1); 

      //---translate the GeoPoint to screen pixels--- 
      Point screenPts2 = new Point(); 
      mapView.getProjection().toPixels(p2, screenPts2); 

      //---add the first marker--- 
      canvas.drawBitmap(bmp, screenPts1.x - bmp.getWidth()/2, 
            screenPts1.y - bmp.getHeight()/2, null); 

(...略...)