2012-02-01 30 views
0

Osmdroid(CustomOverlay.java)でオーバーレイクラスを拡張するクラスを作成しました。ただし、CustomOverlay.javaを使用するメインアクティビティでcreateMark()メソッドを呼び出した後は、マップに何も表示されません。私はItemizedOverlayクラスを使いたくありません。オーバーレイクラスを拡張できますか?

CustomOverlay.java(オーバーレイを拡張するクラス)

public CustomOverlay(Context context) { 
    super(context); 

} 

@Override 
protected void draw(Canvas canvas, MapView mapView, boolean shadow) { 

    Point screenPoint = new Point(); 
    mapView.getProjection().toPixels(geoPoint, screenPoint); 

    super.drawAt(canvas, mapView.getResources().getDrawable(R.drawable.marker), screenPoint.x, screenPoint.y, shadow); 

} 
} 

これは私が主な活動で呼び出すメソッドです:

private void createMarker() { 
    List<Overlay> mapOverlays = mMapView.getOverlays(); 
    Overlay c = new CustomOverlay(this); 
    mapOverlays.add(c); 
    mMapView.invalidate(); 

} 

回答:

@Override 
protected void draw(Canvas canvas, MapView mapView, boolean shadow) { 

    Point screenPoint = new Point(); 
    mapView.getProjection().toPixels(geoPoint, screenPoint); 

    Bitmap marker= BitmapFactory.decodeResource(mapView.getResources(), R.drawable.marker);    
    canvas.drawBitmap(marker, screenPoint.x, screenPoint.y, null); 

} 

答えて

0

回答のためにthisリンクを参照してください。 :)

+0

答えを含めるように私の質問を更新します。ありがとう。 – fulupr

+0

私は、OSMdroidに関する質問がGoogleMapsではないことを理解しました。 –

0

ここではスケルトンですカスタマイズされたオーバーレイの種類:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 

    public MyItemizedOverlay(Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
    } 

    protected OverlayItem createItem(int i) { 
    return mOverlays.get(i); 
    } 

    @Override 
    public int size() { 
    return mOverlays.size(); 
    } 

    public void removeAllOverlay() { 
    mOverlays.clear(); 
    } 

    public void addOverlay(OverlayItem overlay) { 
    mOverlays.add(overlay); 
    populate(); 
    } 
} 

違いを参照してくださいか? populate()コールはどこにありますか? これが役立つことを願っています。

関連する問題