Как лучше всего использовать MKMapCamera?
Я нашел три способа использования MKMapCamera, и я хочу знать, какой из них является наиболее рекомендуемым. Моя цель - следить за пользователем, и я хочу обновлять камеру при каждом обновлении местоположения (то есть каждую секунду).
1.
MKMapCamera *newCamera = [MKMapCamera camera];
[newCamera setCenterCoordinate:newCoordinate];
[newCamera setPitch:60];
[newCamera setHeading:heading];
[newCamera setAltitude:eyeAltitude];
[mapView setCamera:newCamera];
2.
MKMapCamera *newCamera = [MKMapCamera cameraLookingAtCenterCoordinate:newCoordinate
fromEyeCoordinate:oldCoordinate
eyeAltitude:eyeAltitude];
[newCamera setPitch:pitch];
[mapView setCamera:newCamera];
3.
MKMapCamera *oldCamera = mapView.camera;
[oldCamera setCenterCoordinate:newCoordinate];
[oldCamera setPitch:60];
[oldCamera setHeading:heading];
[oldCamera setAltitude:eyeAltitude];
Мудрая память кажется номером 3 самой приличной или это класс синглтон? В большинстве примеров они используют nr1.
Для nr 3 я не могу заставить анимацию работать.
Спасибо!
2 ответа
Используя MKMapCamera, вы можете установить ориентацию карты, не вмешиваясь в преобразования на виде и даже не определяя заголовок пользователя.
MKMapCamera *mapCamera = [[self.mvMap camera] copy];
[mapCamera setHeading:headingDegrees];
[self.mvMap setCamera:mapCamera animated:YES];
Если вам не нужна анимация, вы можете просто установить новый заголовок на существующей камере:
[self.mapView.camera setHeading:heading];
Обновленный ответ в Swift 5
Код ниже работал у меня без звонка
setCamera
let mapCamera = self.mapView.camera
mapCamera.heading = headingInDegrees
mapCamera.centerCoordinate = newCoordinate
Вы также можете просто установить новый заголовок на существующей камере следующим образом:
self.mapView.camera.heading = headingInDegrees