2012-04-25 48 views
0

中删除itemizedOverlay我想实现的是有2种显示在地图上标记。onLocationChanged

1),显示从数据库引出事件红色标记(做过 - itemizedOverlay)

2)橙标记物将动态地图(itemizedOverlay2)上显示用户的位置。

我使用ItemizedOverlay具有2个不同的层(一个用于事件和一个用于用户位置),但是我有与动态标记表示用户位置的问题。

问题:

会发生什么事是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); 

      } 

     } 

我知道你可能需要更多的代码,但让我们留在这个块,看看有人看到我错了。

谢谢。

+0

此链接可能对你有用:安卓MapView无法删除标记](http://stackoverflow.com/a/4634287/3577656)。 – Rajal 2014-08-12 11:56:22

回答

1

您还没有发布针对itemizedOverlay2属于类的代码,但我猜它扩展ItemizedOverlay。既然它有一个addOverlay()方法,我也猜测它有一个.clear()方法。

如果是这样,你应该调用clear()添加新的位置之前

itemizedOverlay2.clear(); 
itemizedOverlay2.addOverlay(overlayItem); 
+0

你对itemizedOverlay2正确的扩展名为MyItemizedOverlay 类 的事情是没有明确的()方法。 clear()方法可用于mapOverlays mapOverlays.clear() 我已经尝试过,它同时清除itemizedOverlay和itemizedOverlay2 – bubbly 2012-04-25 16:00:20

+0

你应该写清楚()方法即可。 public void clear(){mOverlays.clear();} – NickT 2012-04-25 16:10:59

+0

这不会删除两个项目吗? (itemizedOverlay和itemizedOverlay2)? – bubbly 2012-04-25 17:27:08

0

使用内置在MyLocationOverlay类:

position = new MyLocationOverlay(this, mapView); 
position.enableMyLocation(); 
mapOverlays.add(position); 
+0

我已经考虑过了,但它是一种替代方式,而不是解决我的问题。 但随着MyLocationOverlay我不知道如何更改接收位置的频率,一般我不知道它是否能够做的所有事情是什么LocationListener的即可。 – bubbly 2012-04-25 16:03:06