2014-12-04 62 views
0

我正在使用nutiteq地图开发交通应用程序。有超过500条交通线路,很多交通标志。我用这种方式画了交通线。如何清除Nutiteq中的所有mapview项目?

public void drawlines(){ 
    ArrayList<MapPos> arr_lat_long1 = new ArrayList<MapPos>(); 
    for(int i = 0; i < arr_lat_long1.size(); i ++){ 
     MapPos lineMapPos = new MapPos(arr_lat_long1.get(i).x,arr_lat_long1.get(i).y); 
     arr_lat_long1.add(lineMapPos); 
     geoLayer = new GeometryLayer(new EPSG4326()); 
     mapView.getLayers().addLayer(geoLayer); 
     LineStyle lineStyle = null; 
     lineStyle =LineStyle.builder().setWidth(0.14f).setColor(Color.RED).build(); 

     //Label label = new DefaultLabel("Line", "Here is a line"); 
     Line line = new Line(arr_lat_long1, null, lineStyle, null); 
     line.setVertexList(arr_lat_long1); 
     geoLayer.add(line); 
     lines.add(line); 

    } 

我用相同的方法添加标记;

Bitmap pointMarker = UnscaledBitmapLoader.decodeResource(activity.getResources(), R.drawable.marker3); 
     MarkerStyle markerStyle = MarkerStyle.builder().setBitmap(pointMarker).setSize(0.5f).setColor(Color.WHITE).build(); 

     Label markerLabel = new DefaultLabel("Here", "Blabla"); 
     MapPos markerLocation = MainActivity.mapLayer.getProjection().fromWgs84(log, lat); 

     marker = new Marker(markerLocation, markerLabel, markerStyle, null); 

     markerLayer.add(marker); 
     MainActivity.mapView.getLayers().addLayer(markerLayer); 

绘图没有问题。当我想要删除线条或标记时,首先删除项目,但是当我想要滑动地图时,所有项目都会返回并显示在mapview上。我正在迭代删除项目。我删除代码是在这里:

for(int i = 0; i <lines.size(); i++){ 
       geoLayer.remove(lines.get(i)); 

       geoLayer.clear(); 

      } 

而且我再次尝试这样的:

geoLayer.removeAll(lines); 

我怎样才能正确地删除Nutiteq我的所有地图项目?有什么方法可以清除或删除?

+0

请添加代码如何为标记和线条创建新图层。它可以是相关的。 – JaakL 2014-12-04 07:50:27

+0

我添加了我的活动顶部GeometryLayer geoLayer;和MarkerLayer markerLayer; 和我创建新图层geoLayer = new GeometryLayer(new EPSG4326());你可以看到我的功能。和标记; markerLayer = new MarkerLayer(mapLayer.getProjection()); @JaakL – 2014-12-04 07:53:21

回答

0

从上面的代码看来,您正在为每一行创建一个新图层,并且您'忘记'对这些图层的引用。只需将循环中的geoLayer结构移出即可。要删除所有行,您可以调用geoLayer.clear()或geoLayer.removeAll(行)。两者都应该工作。不需要使用for-cycle循环。

+0

看这个问题@MarkT http://stackoverflow.com/q/27354516/1645938 – 2014-12-09 06:22:23

相关问题