MKMapView ve MKMapCamera ile çalışırken garip davranışları farkettim. Apple Maps uygulamasının bazı standart davranışlarını uygulamam gerekiyor. Temel olarak, ihtiyacım olan şey Harita Görünümü kullanıcı izleme modu MKUserTrackingModeFollowWithHeading olarak ayarlandığında 2D ve 3D modları arasında geçiş yapabilmektir. (: Animasyonlu: EVET veya HAYIR ben setCamera bakılmaksızın olur) userTrackingMode MKUserTrackingModeNone olarak ayarlandığında MKMapCamera öğesini MKUserTrackingModeFollowWithHeading modu modunda ayarlarken garip MKMapView davranışı
Şu anda, benim çözüm çalışıyor ancak diğer modlarda garip animasyon yapar. Fotoğraf makinesinin parametrelerini yeni ayarlanmadan hemen önce ve sonra kaydettiğimde, tek fark adım adım değişmem.Başka bir sorun, programın yakınlaştırılması veya uzaklaştırılması için makinenin yüksekliğini değiştirmektir. Ben IBAction yönteminde çimdikleme ya da dışarı hareketi ile yakınlaştırma taklit etmeye çalışıyorum. followWithHeadingMode haritasında her zaman "varsayılan" zum seviyesine (kameranın rakımı) döner, diğer modlarda ise harika çalışır.
Ben neler olduğunu kontrol etmek için örnek proje başladı ve sorun oluştuğunda nerede harita görüntüsü benim tek görünüm uygulamanın görünümü denetleyicisi var: Ne aradığım Apple Haritalar uygulamasına benzer bir davranıştır#import "CCViewController.h"
@interface CCViewController()
@end
@implementation CCViewController
- (void)viewDidLoad{
[super viewDidLoad];
}
- (void)setUpMap{
[self.mapView setShowsUserLocation: YES];
}
- (void)viewDidAppear:(BOOL)animated{
[self setUpMap];
}
- (IBAction)mapModeSwitchClicked:(id)sender {
MKMapCamera *newCamera = [MKMapCamera camera];
newCamera.centerCoordinate = self.mapView.camera.centerCoordinate;
newCamera.heading = self.mapView.camera.heading;
newCamera.altitude = self.mapView.camera.altitude;
if(!self.mapView.camera.pitch){
newCamera.pitch = 50;
self.mapModeSwitch.title = @"2D";
}
else{
newCamera.pitch = 0;
self.mapModeSwitch.title = @"3D";
}
[self.mapView setCamera:newCamera animated:YES];
}
- (IBAction)locateMeButtonClicked:(id)sender {
if(self.mapView.userTrackingMode != MKUserTrackingModeFollowWithHeading)
[self.mapView setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES];
else
[self.mapView setUserTrackingMode:MKUserTrackingModeNone animated:YES];
}
- (void)zoomMapWithZoomFactor:(double)factor{
MKMapCamera *newCamera = [MKMapCamera camera];
newCamera.pitch = self.mapView.camera.pitch;
newCamera.heading = self.mapView.camera.heading;
newCamera.altitude = self.mapView.camera.altitude * factor;
newCamera.centerCoordinate = self.mapView.camera.centerCoordinate;
[self.mapView setCamera:newCamera animated:YES];
}
- (IBAction)zoomInClicked:(id)sender {
[self zoomMapWithZoomFactor: 0.5];
}
- (IBAction)zoomOutClicked:(id)sender {
[self zoomMapWithZoomFactor: 2];
}
@end
. Herhangi bir fikrin var mı? Neyi yanlış yapıyorum ?
, bu hala gerçekleşir. – Claus