如何清除Nutiteq中的所有mapview项目?
问题描述:
我正在使用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我的所有地图项目?有什么方法可以清除或删除?
答
从上面的代码看来,您正在为每一行创建一个新图层,并且您'忘记'对这些图层的引用。只需将循环中的geoLayer结构移出即可。要删除所有行,您可以调用geoLayer.clear()或geoLayer.removeAll(行)。两者都应该工作。不需要使用for-cycle循环。
+0
看这个问题@MarkT http://stackoverflow.com/q/27354516/1645938 – 2014-12-09 06:22:23
请添加代码如何为标记和线条创建新图层。它可以是相关的。 – JaakL 2014-12-04 07:50:27
我添加了我的活动顶部GeometryLayer geoLayer;和MarkerLayer markerLayer; 和我创建新图层geoLayer = new GeometryLayer(new EPSG4326());你可以看到我的功能。和标记; markerLayer = new MarkerLayer(mapLayer.getProjection()); @JaakL – 2014-12-04 07:53:21