2012-02-01 2 views
0

Я создал класс, который расширяет класс Overlay в Osmdroid (CustomOverlay.java). Однако на карте ничего не появляется после того, как я вызываю метод createMark() для основного действия, которое использует CustomOverlay.java. Я не хочу использовать класс ItemizedOverlay.Могу ли я расширить класс Overlay?

Любая идея?

CustomOverlay.java (класс, который расширяет Overlay)

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(); 
    } 
} 

Посмотрите различия? Где ваш звонок()? Надеюсь, это поможет.

Смежные вопросы