2016-07-20 3 views
0

Я внедрил метод - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { для изменения местоположения пользователя. Внутри этого метода я использовал:viewForAnnotation не перемещает userLocation

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

    myAnotation.image = self.userPointImage.image; 
    myAnotation.centerOffset = CGPointMake(0, 250); 

    return myAnotation; 
} 
else 
{ 
    return nil; 
} 

Что успешно перемещает аннотацию userLocation по умолчанию на центральное дно. Но поскольку я также использую заголовок, поэтому, перемещая мой телефон, он все еще поворачивает карту из центра.

- (void)locationManager:(CLLocationManager *) manager didUpdateHeading:(CLHeading *) newHeading { 

    [self.mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:true]; 
} 

Но аннотация пользователя для пользователей приведена ниже. Итак, как это сделать?

UPDATE

Я нашел this вопрос и попытался применить его. Но поскольку я использую заголовок, так что это приводит к сбою приложения. В моем didUpdateUserLocation методе, который я добавил [self moveCenterByOffset:CGPointMake(0, 200) from:userLocation.coordinate]; и этот метод заключается в следующем:

- (CLLocationCoordinate2D)moveCenterByOffset:(CGPoint)offset from:(CLLocationCoordinate2D)coordinate 
{ 
    CGPoint point = [self.mapView convertCoordinate:coordinate toPointToView:self.mapView]; 
    point.x += offset.x; 
    point.y += offset.y; 
    CLLocationCoordinate2D center = [self.mapView convertPoint:point toCoordinateFromView:self.mapView]; 
    return center; 
} 

, а затем в моем didUpdateUserLocation методы я обновил его как: MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([self moveCenterByOffset:CGPointMake(0, -250) from:userLocation.coordinate], 800.0f, 200.0f); и [mapView setRegion:region animated:NO];, как я использую заголовок так анимация установлена ​​в NO. Но теперь, когда я запускаю код, он начинает дергаться между центром и новой точкой.

+0

Попробуйте '[self.mapView setUserTrackingMode: MKUserTrackingModeNone]; 'чтобы избежать проблемы с рывком –

+0

@ReinierMelian, но я хочу использовать заголовок, это требование. Когда пользователь перемещается, карта перемещается и следует его направлению. –

+0

Сообщите мне, если я ошибаюсь, вам нужно отслеживать движения пользователя, но изменить свое положение на поддельную позицию? это то, что вам нужно достичь? –

ответ

1

MKCoordinateRegion region = mapClinicsView.region;

набор «region.center» Это будет поможет вам перемещаться по карте положение центра

убедитесь, что «» region.center и аннотаций центр latitute и долгота такое же

+0

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

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