Προσπαθώ να «uncenter» το τμήμα του χάρτη και να αφαιρέσετε όλα τα σχόλια. Ο λόγος για αυτό είναι ότι η MapView θα πρέπει να χρησιμοποιούνται από διαφορετικούς ελεγκτές, προκειμένου να εμφανίσει διαφορετικές σημειώσεις και τοποθεσίες. Αυτό που συμβαίνει τώρα είναι ότι είμαι με τη μέθοδο της «αφαιρέσει σχόλια» και εγώ να τους απομακρύνει, αλλά ο χάρτης παραμένει επικεντρωμένη επί τόπου και έτσι όταν τα νέα σχόλια έρχονται σε, δεν κινείται. Είναι ένας τρόπος για να επαναφέρετε την περιοχή και αν ναι, τι σχέση μπορώ να επαναφέρετε εκεί. Προσπάθησα μηδέν, μηδέν και κάποιοι υπολογιζόμενη τιμή, αλλά «πυρήνα κινουμένων σχεδίων» λέει ότι είναι όλα άκυρα. Πώς μπορώ να πάρω ότι σε σμίκρυνση και πίσω μέσα σε νέα σχολιασμούς μου;
Εδώ είναι μερικά κωδικό
-(void)recenterMap {
NSArray *coordinates = [_mapView valueForKeyPath:@annotations.coordinate];
CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
CLLocationCoordinate2D minCoord = {90.0f, 180.0f};
//NSLog(@%@, [coordinates description]);
for (NSValue *value in coordinates) {
CLLocationCoordinate2D coord = {0.0f, 0.0f};
[value getValue: &coord];
if(coord.longitude > maxCoord.longitude) {
maxCoord.longitude = coord.longitude;
}
if(coord.latitude > maxCoord.latitude){
maxCoord.latitude = coord.latitude;
}
if(coord.longitude < minCoord.longitude){
minCoord.longitude = coord.longitude;
}
if(coord.latitude < minCoord.latitude){
minCoord.latitude = coord.latitude;
}
}
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center.longitude = (minCoord.longitude + maxCoord.longitude) / 2.0;
region.center.latitude = (minCoord.latitude + maxCoord.latitude) / 2.0;
region.span.longitudeDelta = maxCoord.longitude - minCoord.longitude;
region.span.latitudeDelta = maxCoord.latitude - minCoord.latitude;
[_mapView setRegion: region animated: YES];
}
Αυτό είναι το methos κεντράρετε είμαι με τη χρήση
- (MKAnnotationView *)mapView: (MKMapView *)mapView viewForAnnotation: (id <MKAnnotation>)annotation{
MKAnnotationView *view = nil;
if(annotation != mapView.userLocation){
Annotation *schoolAnn = (Annotation*)annotation;
view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@schoolLoc];
if(nil == view){
view = [[[MKPinAnnotationView alloc] initWithAnnotation:schoolAnn reuseIdentifier:@schoolLoc]autorelease];
}
[(MKPinAnnotationView *)view setAnimatesDrop:YES];
[view setCanShowCallout:YES];
}
else {
[self recenterMap];
}
return view;
}
Αυτό το «άλλο» κομμάτι περιμένει έως ότου η μπλε μάρμαρο πέφτει στην συνέχεια recenters το χάρτη. Το πρόβλημα που έχω με αυτό το μέρος είναι ότι όταν πάω πίσω στην προηγούμενη View Controller μπορώ να αφαιρέσω όλα τα σχόλια, έτσι ώστε όταν θα επανέλθει στη θέση του χρήστη (για κάποιο λόγο) δεν εμφανιστεί ξανά. Πώς μπορώ να πάρω αυτό για να σκάσει πίσω στο?
ευχαριστώ εκ των προτέρων παιδιά













