2016-05-09 16 views
1

マップ上に登録ユーザーを表示する必要のあるアプリケーションを作成しています。プロフィール写真を表示する必要があります。そこでは、それらの多くすることができ、すべての画像を追加することで、1000年、2000年、または3000Google Maps SDK for iOSを使用しているときのメモリとCPU使用量が非常に高い

問題があるかもしれ、そのメモリ使用量が増加し、アプリが遅くなります。たとえば、次のコードを使用しています:

UIImageView * imgView = imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"like_r.png"]]; 
for(int i=0;i<1000;i++) 
{ 
    GMSMarker *marker = [[GMSMarker alloc] init]; 
    marker.position = CLLocationCoordinate2DMake(31.4514885, 74.2642593); 
    marker.iconView = imgView; 
    marker.map=_mapView; 
} 

マップ上にすべてのユーザーを表示する良い方法はありますか?

答えて

1

ユーザーが同時にすべて1000年でピンを表示することができます方法はありません。おそらく、近いユーザーをまとめてグループ化することで、表示されるピン数を減らすべきでしょう。また、ズームインすると、グループ化係数を増やしてピンを分離することができます。

+0

1000のマーカーが表示されているため、地図を拡大することができません。ユーザーが10000になったら気になりますか?何が起きましたか? –

+0

は私にクラスタリングを提案していますか? –

+0

私が言っていることは、一度に最大50〜100のピンしか表示しないことです。 10000ピンを表示する必要がある場合、それらのピンの大部分は互いに重なり合っています。それらが本当に近くにある場合は、それらを1つのピンとして表示する必要があります。たぶんあなたはそれにカウンタでカスタムピンを使用することができます。 (そのピンの近くにユーザー数を表示する)このリンクをご覧ください:https://developers.google.com/maps/documentation/android-api/images/utility-markercluster.png –

12

は、CPUがアイドル状態にできるようにmarker.tracksViewChanges = NO;を設定してみてください。

あるいは、marker.image = [UIImage imageNamed:@"like_r.png"];を設定する代わりに、同様の効果を有していなければならないアイコンビューを設定します。

これらの変更は、CPUを支援する必要がありますが、メモリ関連の問題を解決しないかもしれません。

関連する問題