android – 太多(可能是10,000)绘制的多边形落后谷歌地图

在我的应用程序中,通过逐个绘制每个多边形正方形并用颜色填充它来在地图上绘制“网格”.然后我将多边形对象添加到地图中,以便稍后修改,如果需要的话.

我只创建一次多边形,但是有一个主要的一致“滞后”和低帧率,我添加的越多(可能有数万个),最终打破了应用程序.

以下是创建每个’Square’并将其添加到hashmap的代码的当前部分.

double latScale = 0.000180;
double lngScale = 0.000288;

PolygonOptions po = new PolygonOptions()
        .add(   new LatLng(lat, lng),
                new LatLng(lat, lng + lngScale),
                new LatLng(lat - latScale, lng + lngScale),
                new LatLng(lat - latScale, lng))
        .strokeWidth(3f)
        .strokeColor(Color.argb(220, 0, 0, 0));

if (colors.containsKey(color)){
    po.fillColor(colors.get(color));
}
else{
    po.fillColor(colors.get("default"));
}

gridSquares.put(square_id, mMap.addPolygon(po));

我的问题是,究竟是什么导致它滞后这么多(我意识到它必须是绝对数量,但我需要细节,重新绘制每一帧?内存?)我怎么能满足我对这个巨大网格覆盖的需求这种方式并没有那么多.无论是我目前的思路还是新方式.

如果需要进一步澄清,请询问.

最佳答案 我最终做的工作非常好

>在谷歌地图中为我需要的每个多边形使用GroundOverlay,使用小分辨率图像(30×30,但如果你只需要一种颜色,这可能是1×1),而不是每个多边形.这提高了性能.
>调用OnCameraIdleListener将每个GroundOverlay设置为可见或不可见,具体取决于它是否在该点的屏幕视图中.我最终在屏幕周围使用了一个小缓冲区,以便在此区域中显示叠加层.

点赞