我开发了一个使用MapsForge插件显示地图的Android应用程序。
我想在地图上显示 2000 个点。目前,我使用FixedPixelCircle
来做到这一点,它为每个点提供了一个漂亮的圆圈,我可以用我喜欢的颜色填充它来指示不同的点状态。
问题是FixedPixelCircle
是一个图层,我必须向地图添加 2000 个图层
getMapView().getLayerManager().getLayers().add(myFixedPixelCircle);
这会导致OutofMemoryError
或非常慢。我读到每层需要大约 3MB。
现在我正在寻找一种显示点的不同方式。我可以以某种方式将多个形状添加到单个图层吗?
我最终使用了Circle
的代码 - 一类在图层中显示单个圆圈的MapsForge。我不仅在这一层中画了一个圆环,还画了我想要的所有形状。
public class PointLayer extends TileRendererLayer {
@Override
public void draw(BoundingBox boundingBox, byte zoomLevel, Canvas canvas, Point canvasPosition) {
super.draw(boundingBox, zoomLevel, canvas, canvasPosition);
for (Point p : myPoints) {
//pretty much use the circle code to draw the point
}
}
}
参见 MapsForge Cicle 代码