2016-07-19 17 views
0

Ich habe hier einige der Fragen zu stackOverflow wie this one, this und this one gefunden. Die letzte funktionierte tatsächlich, aber das Problem ist, ich verwende heading in MapKit ich meine (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading. SO das Problem, das es jetzt, wenn ich wende diese Lösung:Wie verschiebt man das Zentrum von MKMapView, so dass das Standard-Standortsymbol nach unten geht

MKCoordinateRegion oldRegion = [mapView regionThatFits:MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 800.0f, 200.0f)]; 
    CLLocationCoordinate2D centerPointOfOldRegion = oldRegion.center; 

    //Create a new center point (I added a quarter of oldRegion's latitudinal span) 
    CLLocationCoordinate2D centerPointOfNewRegion = CLLocationCoordinate2DMake(centerPointOfOldRegion.latitude + oldRegion.span.latitudeDelta/5.0, centerPointOfOldRegion.longitude); 

    //Create a new region with the new center point (same span as oldRegion) 
    MKCoordinateRegion newRegion = MKCoordinateRegionMake(centerPointOfNewRegion, oldRegion.span); 

    //Set the mapView's region 
    [_mapView setRegion:newRegion animated:NO]; 

Es erfolgreich aktualisiert aber als ich mein Handy zu bewegen und die accelometer zugegriffen wird es eine Rucken Wirkung zwischen den newRegion und oldRegion gestartet. Irgendwelche Vorschläge wie?

UPDATE
ich diese Methode gefunden, die lassen Sie mich das Standardbild der userLocation annotation und diese Eigenschaft hat, ändern war, die ich wie myAnnotaton.center so alle hier Ideen einstellen, dass dies funktionieren könnte, oder wie sein Zentrum zu setzen?

- (MKAnnotationView *)mapView:(MKMapView *)mapView 
      viewForAnnotation:(id<MKAnnotation>)annotation { 


    if (annotation==(mapView.userLocation)) { 
     MKAnnotationView *myAnotation = [[MKAnnotationView alloc] init]; 

     myAnotation.image = [UIImage imageNamed:@"marker"]; 
     myAnotation.frame = CGRectMake(0, 0, 100, 100); 

     return myAnotation; 
    } 
    else 
    { 
    return nil; 
    } 
} 
+0

Versuchen animiert Einstellung ja in [_mapView setRegion: newRegion animiert: NO]; damit es nicht ruckelt. – sanman

+0

@sanman es funktioniert nicht ... jetzt ist die App fest, es ist jetzt Zoomen Inn als zuvor war es automatisch heranzoomt ... jetzt hängt es für eine Zeit und dann abgestürzt ... lassen Sie mich wissen, wenn Sie eine bestimmte sehen möchten Stück Code. –

Antwort

1

Sie müssen eine Delegate-Methode hinzufügen, die Ihre Standardannotation überschreibt.

- (MKAnnotationView *)mapView:(MKMapView *)mapView 
      viewForAnnotation:(id<MKAnnotation>)annotation { 


    if (annotation==(mapView.userLocation)) { 
     MKAnnotationView *myAnotation = [[MKAnnotationView alloc] init]; 

     myAnotation.image = self.userPointImage.image; //give any image here 
     myAnotation.centerOffset = CGPointMake(0, 250); 

     return myAnotation; 
    } 
    else 
    { 
    return nil; 
    } 
} 

Die centerOffset wird die Anmerkung auf den Boden gesetzt und die Karte dreht sich entsprechend, um es