我有一個應用程序,我試圖模擬實時跟蹤,所以我正在從一個類中讀取一些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());
}
}