2012-11-20 78 views
1

我想覆蓋android上使用mapsforge映射庫的地圖上的位圖。我正在擴展Overlay類,並且需要實現drawOverlayBitmap。有沒有人有如何做到這一點的想法?我GOOGLE了,但所有的結果回來使用谷歌的API,當你覆蓋的方法有,你的MapView,這樣更有意義......不知道這裏怎麼辦呢android自定義位圖與mapsforge疊加

public abstract class Overlay extends java.lang.Thread { 
private static final java.lang.String THREAD_NAME = "Overlay"; 
private boolean changedSize; 
private boolean hasValidDimensions; 
private final android.graphics.Matrix matrix; 
private float matrixScaleFactor; 
private android.graphics.Bitmap overlayBitmap1; 
private android.graphics.Bitmap overlayBitmap2; 
private final android.graphics.Canvas overlayCanvas; 
private final android.graphics.Point point; 
private android.graphics.Point positionAfterDraw; 
private android.graphics.Point positionBeforeDraw; 
private boolean redraw; 
protected org.mapsforge.android.maps.MapView internalMapView; 

protected Overlay() { /* compiled code */ } 

public final void draw(android.graphics.Canvas canvas) { /* compiled code */ } 

public final void matrixPostScale(float scaleX, float scaleY, float pivotX, float pivotY) { /* compiled code */ } 

public final void matrixPostTranslate(float translateX, float translateY) { /* compiled code */ } 

public boolean onLongPress(org.mapsforge.core.GeoPoint geoPoint, org.mapsforge.android.maps.MapView mapView) { /* compiled code */ } 

public final void onSizeChanged() { /* compiled code */ } 

public boolean onTap(org.mapsforge.core.GeoPoint geoPoint, org.mapsforge.android.maps.MapView mapView) { /* compiled code */ } 

public final void requestRedraw() { /* compiled code */ } 

public final void run() { /* compiled code */ } 

public final void setupOverlay(org.mapsforge.android.maps.MapView mapView) { /* compiled code */ } 

private void redrawOverlay() { /* compiled code */ } 

protected abstract void drawOverlayBitmap(android.graphics.Canvas canvas, android.graphics.Point point, org.mapsforge.android.maps.Projection projection, byte b); 

protected java.lang.String getThreadName() { /* compiled code */ } 

final void changeSize() { /* compiled code */ } 

boolean sizeHasChanged() { /* compiled code */ } 

protected static final enum EventType { 
    public static final LONG_PRESS, public static final TAP; 

    public static org.mapsforge.android.maps.overlay.Overlay.EventType[] values() { /* compiled code */ } 

    public static org.mapsforge.android.maps.overlay.Overlay.EventType valueOf(java.lang.String name) { /* compiled code */ } 

    private EventType() { /* compiled code */ } 
} 
} 

回答

3

使用以下代碼爲例:

Point screenPts = new Point(); 

@Override 
protected void drawOverlayBitmap(Canvas canvas, Point point, 
        Projection projection, byte zoom){ 

     projection.toPixels(new GeoPoint((int)(location.getLatitude()*1E6), 
        (int)(location.getLongitude()*1E6)) , screenPts); 
     canvas.drawBitmap(myBitmap, screenPts.x, screenPts.y, new Paint()); 
} 

問候。

+0

甜美!好決定。我嘗試了這樣的事情,但沒有把它做對。謝謝! – Josh

+0

我擴展ArrayWayOverlay,但無法讓它的工作,我想添加一個文本到我的圖像...所以我叫drawOverlayBitmap超級和此後我tryed canvas.drawText ....我做錯了嗎? – fredcrs

+0

nvm我明白了,謝謝你的代碼! – fredcrs