2010-08-18 32 views
3

Je suis d'ajouter différents marqueurs à ma carte ...MapView Marker ombre

Drawable drawable = app1.getResources().getDrawable(R.drawable.test); 
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 
OverlayItem overlayitem2 = new OverlayItem(mark, "Test", "t"); 
overlayitem2.setMarker(drawable); 
app1.mapOverlay.addOverlay(overlayitem2); 
app1.mapOverlays.add(app1.mapOverlay); 

qui fonctionne, mais l'ombre est à la mauvaise position.

alt text

+0

J'ai eu exactement le même problème, même utilisé la même source d'image marqueur :), la réponse de Mathias était sur place. – Dr1Ku

Répondre

11

J'utilise ceci:

int w = drawable.getIntrinsicWidth(); 
int h = drawable.getIntrinsicHeight(); 
drawable.setBounds(-w/2, -h, w/2, 0); 
+0

Fonctionne comme un charme, merci! – Dr1Ku

+0

Un foutu sauveur – Sebastian

5

Je sais que cela a été répondu il y a un certain temps, mais je pensais signaler qu'il ya une méthode dans la classe ItemizedOverlay appelée: boundCenterBottom (Drawable), qui fait la partie setBounds. Il existe également une méthode boundCenter (Drawable).

+0

Merci ... travaillé très bien avec boundCenterBottom (Drawable) :) –

0

Ajoutez simplement ces lignes dans la classe étendue ItemizedOverlay.

Exemple

public class My_MapOverlay extends ItemizedOverlay<OverlayItem> { 

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

    public My_MapOverlay(Drawable arg0) { 
     super(arg0); 
    } 
}