2014-12-04 58 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

相關問題