在一个 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
}
}
}
我开发了一个 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
}
}
}