2011-06-06 61 views
0

我有一個應用程序,我試圖模擬實時跟蹤,所以我正在從一個類中讀取一些GPS數據,我已經存儲了數據並嘗試把這些點放在地圖上,我還會在當前位置添加一個標記。如何根據GPS數據動態改變覆蓋位置

我面臨的問題是,一旦我將一個覆蓋圖添加到一個位置,它就會停留在那裏......當我讀取下一個位置並將其放置在地圖上並向其添加標記時。 ...我在地圖上有兩個疊加層...

我想要做的就是將疊加層放在每個當前位置......就像它會在地圖上走路一樣......並且只有一個疊加層當時我所代表的位置上的地圖...以前的位置上以前的疊加層消失了,但我無法真正知道如何實現這一點。

希望你能幫助我!

這是我的代碼:

public void onCreate(Bundle savedInstanceState) 
{ 
    marker = getResources().getDrawable(R.drawable.comet); 
    marker.setBounds(0,0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight()); 
} 

----------------我使用的是異步線程讀取GPS數據------- ------------------

protected Void doInBackground(Void... voids) 
{ 
    while (true) { 
    longitude = ServerManager.getInstance().getLastLongitude(); 
    latitude = ServerManager.getInstance().getLastLatitude(); 
    p = new GeoPoint(latitude, longitude); 
    publishProgress(p); 
    } 
    } 

    protected void onProgressUpdate(GeoPoint... progress1) 
    { 
    mapView.getOverlays().add(new SitesOverlay(marker,progress1[0])); 
    } 
} 

最後,這是我的班組長它增加了覆蓋:

private class SitesOverlay extends ItemizedOverlay<OverlayItem> 
{ 
    private List<OverlayItem> items = new ArrayList<OverlayItem>(); 
    private Drawable marker = null; 
    GeoPoint gp1; 

    public SitesOverlay(Drawable marker,GeoPoint gp1) 
    { 
     super(marker); 
     this.marker = marker; 
     this.gp1=gp1; 
     items.add(new OverlayItem(gp1,"Your location", "You are here!")); 
     populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) 
    { 
     return (items.get(i)); 
    } 

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

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

回答