【发布时间】:2011-06-06 12:52:13
【问题描述】:
我有一个应用程序,我试图在其中模拟实时跟踪,所以我从一个存储数据的类中读取一些 GPS 数据,并尝试将这些点放在地图上,我还添加了一个标记到当前位置。
我面临的问题是,一旦我将叠加层添加到一个位置,它就会停留在那里......当我阅读下一个位置并将其放在地图上并为此添加一个标记时...... ..我的地图上有两个叠加层...
我想要做的是将叠加层放在每个当前位置......就像它会在地图上行走......并且在我当时代表的位置上只有一个叠加层。 ..al 之前的职位覆盖都消失了,但我真的不知道如何实现。
希望你能帮助我!
这是我的代码:
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());
}
}
【问题讨论】: