2012-08-22 2 views
0

보이는 오버레이 아이템을 그리기 위해 노력하고 있습니다. 그래서 캔버스가 오버레이 아이템을 그릴 Rect를 결정할 수 없습니다.Canvas에서 그려진 Rect를 결정하십시오. (OverlayItem의 위치 결정)

내가 (항목 별 오버레이 방식) 지금까지 무슨 짓을 한게 ..하지만 getClipBounds과는() 올바른 사각형이

@Override 
    public void draw(Canvas canvas, MapView map, boolean shadow) { 
     if (getMapBounds().intersect(canvas.getClipBounds())) { 
      super.draw(canvas, map, false); 
     } 
    } 

내가 다른 OverlayItems을 그릴하지 않으려는 반환하지 않습니다, 내가 원하는 하지 난이 캔버스 을 그릴하지 않는 경우에 당신이 그릴을 찾고 있다면 거의 2000 오버레이 항목

+1

질문하지 .Did 유 여기에 있다고 할 수있는 기능입니다 자세히 설명해 주시겠습니까? – saravanan

답변

0

: 이해

@Override 
    public void draw(Canvas canvas, MapView map, boolean shadow) { 
     for (int i = 0; i < mOverlays.size(); i++) { 
      if (isLocationVisible(mOverlays.get(i).getPoint())) { 
       super.draw(canvas, map, false); 
      } 
     }  
    } 
0

을 가지고지도보기을 빠르게 수행되기 때문에 내 캔버스지도보기 의 가시의 구형 내에 뭔가를 그릴 수 있는지 알고 다음과 같은 오버레이 :

기본적으로 캔버스를 사용하여 backgroundImage에 customImage를 적용해야합니다. 이 구현을 사용하면 효과적으로 'ItemizedOverlay'에 대한 마커로 지정할 수있는 캔버스에서 BitmapDrawable을 효과적으로 만들 수 있습니다. 이것이 당신이 찾고 있던 항목 화 된 오버레이 유형이라면 항목 화 된 오버레이 클래스의 그리기 기능을 오버라이드 할 필요가 없습니다. 다음 코드를 사용하여 생성자에서 ItemizedOverlay에 할당 할 수있는 BitmapDrawable을 만드는 것뿐입니다. 그들은 그냥 같이지도하거나 말든 항목 반복하고 확인하여 내가 지금 이런 짓을

public BitmapDrawable imageOnDrawable(int drawableBackground, Bitmap customImage) 
{ 
//The following line is optional but I'd advise you to minimize the size of 
//the size of the bitmap (using a thumbnail) in order to improve draw 
//performance of the overlays (especially if you are creating a lot of overlays). 

Bitmap customImageThumbnail = ThumbnailUtils.extractThumbnail(
               customImage, 100, 100); 

Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId); 
bm = Bitmap.createScaledBitmap(bm, 112, 120, false); 

Canvas canvas = new Canvas(bm); 
canvas.drawBitmap(bm, 0, 0, null); 
// The 6,6 in the below line refer to the offset of the customImage/Thumbnail 
// from the top-left corner of the background box (or whatever you want to use 
// as your background) 
canvas.drawBitmap(customImageThumbnail, 6, 6, null); 

return new BitmapDrawable(bm); 

} 
+0

나는 OverlayItems를 가지고있다.이 캔버스가지도보기의 보이는 rect 내에 오버레이 항목을 그렸는지 아닌지는 내가 알지 못하는 것을 그리는 것이다. 그렇지 않다면지도의 속도를 향상시키기 위해 overlayitem을 그리지 않을 것이기 때문이다. 보기 – lukaswelte

+0

캔버스에는 지리 정보가 없기 때문에 캔버스를 기반으로 결정하는 것이 어렵습니다. 반면 항목 화 된 오버레이에 포함 된 오버레이는 자체 지오 포인트가 있습니다. 그래서 여러 오버레이의 컨테이너로 Itemized Overlay를 사용하고 있는지 또는 각 오버레이에 대해 서로 다른 항목의 오버레이 개체를 사용하고 있는지 궁금합니다. –

+0

Itemized Overlay에는 여러 개의 OverlayItem이 있지만 하나 이상의 Itemized Overlay가 있습니다 ... 그러면 OverlayItem의 Draw에서 더 쉽게/더 쉽게 할 수 있습니까? 그렇다면 어떻게 그곳에 그려진 직사각형을 얻을 수 있습니까? – lukaswelte