2011-02-09 3 views
0

Я пытаюсь добавить наложение для myLocation в Android. Отображается карта, но наложение отсутствует. Я получил оверлей для отображения с использованием отдельного класса, который расширяет ItemizedOverlay. Мне интересно, есть ли способ показать эту отдельную точку без создания отдельного класса?Android MapView

Прилагается исходный код для класса активности.

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

Я не вижу, где вы на самом деле используете свой «Drawable» для чего-либо. Вы создаете оверлей, но вы на самом деле ничего не вкладываете в него или не устанавливаете свой маркер в свой drawable. Я также не понимаю, почему вы так не склонны создавать другой класс. Похоже, у вас уже есть один под названием MyLocationOverlay. –

ответ

0

Вам необходимо вызвать invalidate() на m_vwMap, чтобы он перерисовывал себя.