2012-09-27 37 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

究竟是什麼問題?你的意思是上面(屏幕上方)還是上方(sobreposition)? – Luis

回答

1

從你的問題很難猜出你的問題到底是什麼,但是如果你的意思是說PNG正在被其他覆蓋物所覆蓋,並且你希望它被覆蓋在它們之下,你可以通過先添加PNG覆蓋層來解決它到mapview。

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

這導致overlay2上畫出來overlay1:

的MapView由以便你添加它們要求從每個覆蓋draw方法。

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

這導致overlay1被overlay2繪製。

祝你好運。

+0

嗨路易斯,問題是谷歌地圖的指南針層。看看這個圖像http://212.92.53.23/photo.JPG –

+0

您好埃內斯托,你可以用我上面顯示的解決方案解決問題。只需添加在任何其他覆蓋層之前繪製PNG圖像的覆蓋層,它將首先被繪製。其他覆蓋圖將被繪製在圖像上。讓我知道你是否需要更多的細節如何做到這一點。 – Luis

+0

謝謝路易斯。我認爲指南針圖層默認包含在內。我更改了mapView.getOverlays()。add(myLocationOverlay)順序和「賓果」。 –