私はGoogleMapsV2を使用しています。私はClusterManager(ClusterManager.addItems(Collection))に一括して追加する10,000個のクラスタ項目があります。クラスタで多数のClusterItemを処理する方法 - Android GoogleマップV2
私の問題は、クラスタリングとデ・クラスタリングの処理が遅く、遅いことです。 。。周りに10 000項目に(6ギガバイトまたはラムと)OnePlus3でのテストので、それは携帯電話ではありません。ここ
は、クラスタでの活動でコードを関連付ける:
// Rent markers
rentMarkerList = new ArrayList<>();
rentClusterManager = new ClusterManager<OffersMarker>(this, gmap);
rentClusterRenderer = new OffersClusterRenderer(this, gmap, rentClusterManager);
rentClusterManager.setRenderer(rentClusterRenderer);
for (AdMarker adMarker : adsArray) { //<-- adsArray.size() = 6500
OffersMarker offsetItem = makeOffersMarker(adLocation, nrOfAds, realEstateAdIds, OffersMarker.DEALTYPE.SALE_CODE);
rentMarkerList.add(offsetItem);
}
// Do bulk add of Markers into ClusterManager.
rentClusterManager.addItems(saleMarkerList);
rentClusterManager.cluster();
私は私のClusterRendererの上に行って、私は行っておりませんonBeforeClusterItemRendered()およびonBeforeClusterRendered()の大規模操作。 これは、クラスタリングを行う場合、クラスタリングはクラスタ化されていない場合よりもはるかに低速ですが、通常はクラスタリングがはるかに小さいズームレベルで行われるため、マーカーが多く表示されることもあります。
私のアンドロイドモニタは、グラフィックスの問題ではないので、クラスタリングプロセスによってメモリとCPUが変更され、GPUは変更されないことが示されます。
解決方法私は試しました:のような動的クラスタレンダリングを行う。この場合、マーカリストをループして、Viewport境界にあるものを確認し、それらのマーカーのみを表示します。これは、onCameraIdle ...が呼び出されるたびに10 000のマーカーすべてをループしなければならなかったため、全体的に悪化しました。
この問題の最適化はどこから始めるのですか?