2016-07-19 2 views
0

Я нашел некоторые вопросы, связанные с этим на stackOverflow как this one, this и this one здесь. Последний действительно работал, но проблема в том, что я использую heading в MapKit Я имею в виду это (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading. Так что проблема в настоящее время, когда я применил это решение:Как перенести центр MKMapView так, чтобы значок местоположения по умолчанию попал в центр внизу

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

Она успешно обновляет, но, как я двигаюсь мой телефон и accelometer происходит обращение он начал рывки эффекта между newRegion и oldRegion. Любые простуды как?

UPDATE
Я нашел этот метод, который был позвольте мне изменить изображение по умолчанию userLocation annotation и это имеет свойство, которое я могу установить как myAnnotaton.center так любые идеи здесь, что это может работать или как установить его центр?

- (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

Попробуйте установить анимированные да в [_mapView setRegion: newRegion анимированные: NO]; так что он не рывком. – sanman

+0

@sanman это не работает ... теперь приложение застряло, оно теперь масштабирует гостиницу, поскольку ранее оно автоматически увеличивалось ... теперь оно затихает какое-то время, а затем разбивается ... дайте мне знать, если вы хотите увидеть конкретную кусок кода. –

ответ

1

Необходимо добавить метод делегата, который будет перезаписывать аннотацию по умолчанию. не

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

centerOffset установит аннотацию на дно, и карта будет вращаться соответственно к нему

Смежные вопросы