Sam*_*Sam 5 android google-maps
目前在我的应用程序中,通过一个一个地绘制每个多边形正方形并用颜色填充它,在地图上绘制了一个“网格”。然后,我将多边形对象添加到地图中,以便稍后根据需要进行修改。
我只创建每个多边形一次,但是我添加的越多(可能数以万计),就会出现主要的一致“滞后”和低帧速率,最终破坏了应用程序。
这是创建每个“Square”并将其添加到哈希图的代码的当前部分。
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));
Run Code Online (Sandbox Code Playgroud)
我的问题是,究竟是什么导致它滞后这么多(我意识到它一定是绝对数量,但我需要细节,重新绘制每一帧?内存?)我怎么能在某些情况下满足我对这个巨大网格覆盖的需求?不那么滞后的方式。要么用我目前的思路,要么用一种新的方式。
如果需要更多说明,请询问。
我最终所做的效果非常好的事情是
在谷歌地图中为我需要的每个多边形使用GroundOverlay,为每个多边形使用小分辨率图像(30x30,但是如果您只需要一种颜色,则可以是1x1),而不是绘制每个多边形。这大大提高了性能。
调用 OnCameraIdleListener 将每个 GroundOverlay 设置为可见或不可见,具体取决于当时它是否在屏幕视图中。我最终在屏幕周围使用了一个小缓冲区,以使叠加层在该区域也可见。
| 归档时间: |
|
| 查看次数: |
1357 次 |
| 最近记录: |