我想要实现的是在地图上显示两种标记。
1)显示从数据库中提取的事件的红色标记(完成- itemizedOverlay)
2)橙色标记,它将动态显示用户在地图(ItemizedOverlay2)上的位置。
我使用ItemizedOverlay来拥有两个不同的层(一个用于事件,另一个用于用户位置),但是显示用户位置的动态标记有问题。
发行:
所发生的事情是,LocationListener成功地获取了纬度/经度,并在地图上放置了一个点,但前面的点仍然存在。因此,我有一个标记跟踪显示用户的位置。
我已经实现了一些方法,我发现搜索互联网,但没有发生在调用onLocationChanged。
class myLocationListener implements LocationListener{
OverlayItem overlayItem;
@Override
public void onLocationChanged(Location location) {
if (location != null){
mapOverlays.remove(itemizedOverlay2);
mapView.invalidate();
lat = location.getLatitude();
longi = location.getLongitude();
GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
mControl.animateTo(point);
overlayItem = new OverlayItem(point, "My Location", "This is probably where you are");
itemizedOverlay2.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay2);
}
}我知道你可能需要更多的我的代码,但让我们留在这个街区看看是否有人看到我哪里弄错了。
谢谢。
发布于 2012-04-25 15:30:27
您还没有发布itemizedOverlay2所属类的代码,但我猜它扩展了ItemizedOverlay。因为它有一个addOverlay()方法,所以我也猜测它有一个.clear()方法。
如果是这样的话,那么在添加新位置之前,应该调用clear()
itemizedOverlay2.clear();
itemizedOverlay2.addOverlay(overlayItem);发布于 2012-04-25 15:32:38
使用在类MyLocationOverlay中构建的:
position = new MyLocationOverlay(this, mapView);
position.enableMyLocation();
mapOverlays.add(position);https://stackoverflow.com/questions/10318343
复制相似问题