2012-11-13 46 views
0

我的代碼如下。本質上,我試圖用自定義標記替換每個標記,即我的可繪製beer_full。OSMDroid MapView。成功添加自定義標記,但默認也顯示過?

在我的自定義覆蓋圖中這個被覆蓋的繪圖函數完成了這項工作,但它也保留了默認圖標。所以我的標記作爲默認標記頂部的自定義標記出現在我的地圖上。

任何人都知道我如何停止默認標記顯示?

乾杯

@Override 
    public void draw(Canvas canvas, MapView mapview, boolean shadow) { 
     // TODO Auto-generated method stub 
     super.draw(canvas, mapview, shadow); 

     if(!shadow) 
     { 
     for (int ctr = 0; ctr < myOverlays.size(); ctr++) 
     { 
      GeoPoint in = myOverlays.get(ctr).getPoint(); 

      //Toast.makeText(mapview.getContext(), ctr, Toast.LENGTH_SHORT).show(); 

      Point out = new Point(); 
      mapview.getProjection().toPixels(in, out); 

      Bitmap bm = BitmapFactory.decodeResource(mapview.getResources(), 
       R.drawable.beer_full); 


      canvas.drawBitmap(bm, 
       out.x - bm.getWidth()/2, //shift the bitmap center 
       out.y - bm.getHeight()/2, //shift the bitmap center 
       null); 
     } 
     } 
    } 
+0

你可以刪除'super.draw(canvas,mapview,shadow)'並檢查會發生什麼嗎? – Marcelo

+0

It works :) 我是個白癡。所以我正確地理解,通過擁有那個超級構造函數,它只是簡單地調用默認的繪圖函數呢? 沒有超級構造函數還有其他問題嗎? –

+1

這不是一個構造函數,它只是一個方法。是的,你是正確的,你告訴超級班級繪製默認圖標,然後繪製自定義圖標。至於任何關於不對超級類別進行調用的問題,這取決於它是如何實現的,但如果你沒有問題地嘗試它,這將不會是一個問題。如果你有權訪問超級類的源代碼,我建議你檢查一下,看看他們在那裏做了什麼。 – Marcelo

回答

1

卸下線super.draw(canvas, mapview, shadow);。您基本上正在繪製默認圖標(通過調用draw方法的默認實現),然後在其上繪製自定義圖標。

相關問題