2012-11-13 4 views
0

내 코드는 다음과 같습니다. 본질적으로, 각 마커를 내 사용자 정의 마커 즉, 드로어 블 맥주 풀로 대체하려고합니다.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

그것은 작동합니다 :) 나는 바보입니다. 그래서 나는 슈퍼 생성자를 가짐으로써 단순히 기본 그리기 함수를 호출한다는 것을 이해하는 것이 맞습니까? 슈퍼 생성자가없는 다른 문제가 있습니까? –

+1

이것은 생성자가 아니라 단지 방법 일뿐입니다. 그리고 네, 맞습니다. 수퍼 클래스에게 기본 아이콘을 그리고 사용자 정의 아이콘을 그리라고 말하고있었습니다. 수퍼 클래스에서 드로잉을 호출하지 않는 문제는 구현 방식에 따라 다르지만 문제없이 시도한 경우 문제가되지는 않습니다. 수퍼 클래스 소스 코드에 대한 액세스 권한이있는 경우 체크 아웃하고 다른 작업을 수행하는지 확인하는 것이 좋습니다. – Marcelo

답변

1

라인 super.draw(canvas, mapview, shadow);를 제거합니다. 기본적으로 draw 메서드의 기본 구현을 호출하여 기본 아이콘을 그린 다음 사용자 지정 아이콘을 그 위에 그립니다.

관련 문제