我怎样才能清除Nutiteq中的所有mapview项目?

时间:2014-12-04 07:01:11

标签: android-mapview lines marker items nutiteq

我正在使用nutiteq地图开发流量应用程序。有超过500条交通线路,很多关于交通的标记。我用这种方式画了交通线;

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上正确删除我的所有地图项?有没有办法清除或删除?

1 个答案:

答案 0 :(得分:0)

从上面的代码中,您似乎正在为每一行创建一个新图层,并且您“忘记”对这些图层的引用。只需在循环外部移动geoLayer构造即可。要删除所有行,可以调用geoLayer.clear()或geoLayer.removeAll(行)。两者都应该有效。无需使用for-cycle循环。