2012-09-27 2 views
1
public PNGOverlay(Bitmap original, GeoPoint topLeftGeoPoint, GeoPoint bottomRightGeoPoint) { 
    this.original = Bitmap.createScaledBitmap(original, original.getWidth(), original.getHeight(), true); 


    ... 
    topGeoPoint = topLeftGeoPoint; 
    bottomGeoPoint = bottomRightGeoPoint; 
} 

@Override 
public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
     super.draw(canvas, mapView, false); 

     Projection projection = mapView.getProjection(); 

     Point leftTop = new Point(); 
     Point rightTop = new Point(); 
     Point rightBottom = new Point(); 
     Point leftBottom = new Point(); 

     projection.toPixels(topGeoPoint, leftTop); 
     projection.toPixels(new GeoPoint(topGeoPoint.getLatitudeE6(), bottomGeoPoint.getLongitudeE6()), rightTop); 
     projection.toPixels(bottomGeoPoint, rightBottom); 
     projection.toPixels(new GeoPoint(bottomGeoPoint.getLatitudeE6(), topGeoPoint.getLongitudeE6()), leftBottom); 

     .... 

     Paint paint = new Paint(); 
     paint.setFilterBitmap(true); 
     paint.setAntiAlias(true); 

     canvas.drawBitmap(original, null, new Rect(leftTop.x, leftTop.y, rightBottom.x, rightBottom.y), paint); 

     .... 
} 

이 코드에는 문제가 있습니다. mapView에 png를 그릴 때 png 이미지가 나침반 위를지나 GPS 위치 표시 자 위에 표시됩니다. 어떤 생각?Android Png 오버레이 문제

+0

정확히 무엇이 문제입니까? 위 (화면 상단) 또는 이상 (중간)을 의미합니까? – Luis

답변

1

정확하게 무엇이 문제인지 짐작하기는 어렵지만 PNG가 다른 오버레이 위에 그려져 있고 그 아래에 있기를 원할 경우 PNG 오버레이를 먼저 추가하여 해결할 수 있습니다 지도보기에.

이 오버레이 2 결과
mapview.getoverlays().add(overlay1); 
mapview.getoverlays().add(overlay2); 

이 overlay1를 통해 그려지 :

지도보기 당신이 추가 된 순서에 의해 각 오버레이에서 무승부 메소드를 호출합니다.

mapview.getoverlays().add(overlay2); 
mapview.getoverlays().add(overlay1); 

이렇게하면 overlay1이 overlay2에 그려집니다.

행운을 비네.

+0

안녕 루이스, 문제는 Google지도의 나침반 레이어입니다. 이 이미지를보십시오 http://212.92.53.23/photo.JPG –

+0

안녕하세요, Ernesto, 제가 위에 보여주고있는 문제를 해결할 수 있습니다. 다른 오버레이 앞에 PNG 이미지를 그리는 오버레이를 추가하면 처음으로 그려집니다. 그러면 다른 오버레이가 이미지 위에 그려집니다. 더 자세한 정보가 필요한 경우 알려주십시오. – Luis

+0

고마워요. 루이스. 나침반 레이어가 기본적으로 포함되어 있다고 생각했습니다. mapView.getOverlays(). add (myLocationOverlay) order 및 "bingo"를 변경합니다. –