2014-12-04 4 views
0

Я разрабатываю приложение для трафика с использованием карты nutiteq. Существует более 500 линий трафика, много маркеров о трафике. Я нарисовал дорожные линии таким образом;Как я могу очистить все элементы mapview в 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); 

    } 

и я добавляю маркеры таким же образом;

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 = новый GeometryLayer (новый EPSG4326()); вы можете видеть в моей функции. И для маркера; markerLayer = новый MarkerLayer (mapLayer.getProjection()); @JaakL –

ответ

0

Из приведенного выше кода кажется, что вы создаете новый слой для каждой строки, и вы «забываете» ссылки на эти слои. Просто переместите построение geoLayer за пределы цикла. Для удаления всех строк вы можете вызвать либо geoLayer.clear(), либо geoLayer.removeAll (строки). Оба должны работать. Нет необходимости использовать цикл for-цикла.

+0

посмотреть на этот вопрос @MarkT http://stackoverflow.com/q/27354516/1645938 –

 Смежные вопросы

  • Нет связанных вопросов^_^