2016-05-09 7 views
1

Ich erstelle eine App, in der ich die registrierten Benutzer auf der Karte anzeigen muss. Ich muss ihre Profilbilder anzeigen. Es kann viele von ihnen geben, möglicherweise 1000, 2000 oder 3000.Sehr hohe Speicher- und CPU-Auslastung bei Verwendung von Google Maps SDK für iOS

Das Problem besteht darin, dass durch Hinzufügen jedes Bildes die Speichernutzung erhöht und die App verlangsamt. Zum Beispiel verwende ich nur dieses Stück Code:

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; 
} 

Gibt es einen guten Weg, um alle Benutzer auf der Karte zu zeigen?

Antwort

1

Es gibt keine Möglichkeit, dass ein Benutzer alle 1000 Pins gleichzeitig sehen kann. Sie sollten wahrscheinlich die Anzahl der angezeigten Pins verringern, indem Sie die Benutzer in der Nähe zusammenfassen. Und beim Vergrößern können Sie diese Pins trennen, indem Sie den Gruppierungsfaktor erhöhen.

+0

Ich kann meine Karte nicht zoomen, da ich 1000 Marker angezeigt habe. Ich mache mir Sorgen, wenn der Benutzer dann auf 10000 kommt? was ist los? –

+0

schlagen Sie mir vor, Clustering zu machen? –

+0

Was ich sage ist, dass Sie nur maximal 50-100 Pins gleichzeitig anzeigen sollten. Wenn Sie 10000 Pins anzeigen müssen, sind die meisten dieser Pins übereinander. Wenn sie sich wirklich in der Nähe befinden, sollten Sie sie als einen Pin anzeigen. Vielleicht können Sie einen benutzerdefinierten Stift mit einem Zähler darauf verwenden. (Anzeige des Nutzerbetrags in der Nähe dieses Pins) Sehen Sie sich diesen Link an: https://developers.google.com/maps/documentation/android-api/images/utility-markercluster.png –

12

Versuchen Sie die Einstellung marker.tracksViewChanges = NO;, um die CPU in den Leerlauf zu versetzen.

Alternativ marker.image = [UIImage imageNamed:@"like_r.png"]; anstelle der Einstellung der iconView, die einen ähnlichen Effekt haben sollte.

Diese Änderungen sollten mit der CPU helfen, lösen jedoch möglicherweise nicht die speicherbezogenen Probleme.