iOS aktualisieren Anmerkungen auf der mapview
Ich habe eine mapview, wo der annotation werden die Koordinaten ständig aktualisiert, aber wenn ich setCoordinate, die annotation nicht bewegen. Wie aktualisiere ich die Anmerkungen reflektieren Ihre Koordinaten?
- (void)updateUnits {
PFQuery *query = [PFQuery queryWithClassName:@"devices"];
[query whereKeyExists:@"location"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *row in objects) {
PFGeoPoint *geoPoint = [row objectForKey:@"location"];
CLLocationCoordinate2D coord = { geoPoint.latitude, geoPoint.longitude };
for (id<MKAnnotation> ann in mapView.annotations) {
if ([ann.title isEqualToString:[row objectForKey:@"deviceid"]]) {
[ann setCoordinate:coord];
NSLog(@"latitude is: %f" , coord.latitude);
NSLog(@"Is called");
break;
}
else {
//[self.mapView removeAnnotation:ann];
}
}
}
}
else {
}
}];
}
- Diese kann getan werden, indem nur die änderung der Koordinaten im Beschreibungs-Objekt. Es erfordert keine annotation entfernt werden, und dann Hinzugefügt, um anzeigen für die änderung wirksam wird
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisiert (entsprechend die Lösung):
Nachdem Sie Ihre eigenen benutzerdefinierten Beschriftungen und Umsetzung setCoordinate und/oder Synthese zu koordinieren, die Probleme verursachen können.
Quelle: http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps/AnnotatingMaps.html
Bisherige Lösung:
Können Sie einfach entfernen Sie alle Anmerkungen und dann neu hinzufügen.
oder entfernen Sie Sie und erneut fügen Sie Sie eins nach dem anderen:
didDeselectAnnotation
auslösen wird, nach dem entfernen aller Anmerkungen.Versand die Anmerkung hinzufügen, um den Haupt-thread eher dann versuchen Sie, ändern der Benutzeroberfläche auf einem hintergrund-thread
Swift 3.0 version von Nathans Antwort (danke Nathan):
Seite beachten, Nathan ' s Antwort sollte wesentlich mehr upvotes. Ich tatsächlich benötigt, diese Hilfe mit dem entfernen einer annotation, das gleiche Problem existiert und ist fest mit dem Versand der update auf die main queue.
Versuchen Sie es mit
[self.mapView removeAnnotations:self.mapView.annotations]
:Fügen Sie Einfach