2011-02-09 6 views
0

J'essaie d'ajouter une superposition pour myLocation dans Android. La carte s'affiche, mais pas la superposition. J'ai fait apparaître la superposition en utilisant une classe séparée qui étend ItemizedOverlay. Je me demande s'il existe un moyen d'afficher ce point individuel sans créer une classe distincte?Android MapView

Le code source de la classe d'activité est joint.

public class WalkAbout extends MapActivity { 

    //for Hello_mapview 
    List<Overlay> mapOverlays; 
    Drawable drawable; 

    private MapView m_vwMap; 
    private MapController m_mapController; 
    private PathOverlay m_pathOverlay; 
    private MyLocationOverlay m_locationOverlay; 

    private ArrayList<GeoPoint> m_arrPathPoints; 
    private ArrayList<OverlayItem> m_arrPicturePoints; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initLocationData(); 

     initLayout(); 
    } 
    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 

    private void initLocationData() { 
     // TODO 
    } 

    private void initLayout() { 
     //instantiate XML File into corresponding view objects. 
     //Then inflate new view from XML resource. 
     setContentView(R.layout.map_layout); 
     MapView m_vwMap = (MapView)findViewById(R.id.mapview); 
     m_vwMap.setBuiltInZoomControls(true); 
     m_vwMap.setSatellite(true); 

     //retrieve list of overlay objects 
     mapOverlays=m_vwMap.getOverlays(); 

     //set market for overlays 
     drawable=this.getResources().getDrawable(R.drawable.item); 
     drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), 
            drawable.getIntrinsicHeight()); 

     //create OverlayItem with my location 
     m_locationOverlay= new MyLocationOverlay(this, m_vwMap); 

     //enable market to set location and direction 
     m_locationOverlay.enableCompass(); 
     m_locationOverlay.enableMyLocation(); 

     mapOverlays.add(m_locationOverlay); 
     } 
} 
+0

Je ne vois pas où vous utilisez réellement votre 'Drawable' pour n'importe quoi. Vous créez une superposition, mais vous n'y mettez rien ou vous placez son marqueur sur votre dessinable. Je ne comprends pas pourquoi vous êtes si opposé à la création d'une autre classe. Il semble que vous en ayez déjà un nommé 'MyLocationOverlay'. –

Répondre

0

Vous devez appeler invalidate() sur votre m_vwMap pour qu'il se redessine automatiquement.