在一个 Mapsforge 图层上绘制多个形状

Draw many shapes on one Mapsforge layer

我开发了一个 Android 应用程序,它使用 MapsForge plugin 来显示地图。

我想在我的地图上显示 2000 个点。目前我使用 FixedPixelCircle 来为每个点提供一个漂亮的圆圈,我可以用我喜欢的颜色填充以指示不同的点状态。

问题是 FixedPixelCircle 是一个图层,我必须向我的地图添加 2000 个图层

getMapView().getLayerManager().getLayers().add(myFixedPixelCircle);

导致 OutofMemoryError 或速度极慢。我读到每一层大约需要3MB。

现在我正在寻找一种显示点数的不同方式。我能以某种方式将多个形状添加到 单个 层吗?

我最终使用了 Circle 的代码 - MapsForge 的 class,它在一个图层中显示一个圆圈。我只是在这一层不仅画了一个圆圈,还画了我想要的所有形状。

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 code