2014-12-04 10 views
0

나는 nutiteq 맵을 사용하여 교통 애플리케이션을 개발 중입니다. 500 개 이상의 트래픽 라인이 있으며 트래픽에 대한 많은 표시가 있습니다. 나는 이런 식으로 교통량을 계산했다.Nutiteq에서 모든지도보기 항목을 지우려면 어떻게해야합니까?

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); 

    } 

및 i는 동일한 방식으로 마커를 추가합니다.

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); 

그리기에는 문제가 없습니다. 선이나 표식을 지울 때 먼저 항목을 삭제하지만지도를 슬라이드하려면 모든 항목이 돌아와서지도보기에 표시됩니다. 항목을 반복적으로 삭제합니다.

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

       geoLayer.clear(); 

      } 

도 내가 다시이 시도 : 내 삭제 코드는 여기

geoLayer.removeAll(lines); 

어떻게 Nutiteq에서 제대로 내 모든 맵 항목을 삭제할 수 있습니다 ?? 삭제하거나 삭제할 수있는 방법이 있습니까?

+0

표식과 선에 대해 새로운 레이어를 만드는 방법을 코드를 추가하십시오. 관련성이있을 수 있습니다. – JaakL

+0

내 활동 상단에 GeometryLayer geoLayer를 추가했습니다. 및 MarkerLayer markerLayer; 새 레이어를 만듭니다. geoLayer = new GeometryLayer (새 EPSG4326()); 당신은 내 기능에서 볼 수 있습니다. 그리고 마커에 대해서; markerLayer = 새로운 MarkerLayer (mapLayer.getProjection()); @JaakL –

답변

0

위의 코드에서 각 줄마다 새 레이어를 만드는 것처럼 보이며이 레이어에 대한 참조를 '잊어 버리고'있는 것 같습니다. 루프 외부에서 geoLayer 구성을 이동하기 만하면됩니다. 모든 행을 제거하려면 geoLayer.clear() 또는 geoLayer.removeAll (lines)을 호출하면됩니다. 둘 다 작동해야합니다. for-cycle 루프를 사용할 필요가 없습니다.

+0

이 질문을보세요 @MarkT http://stackoverflow.com/q/27354516/1645938 –