[英]Switching between 2D and 3D mapview (pitchEnabled)
我有一個 iOs 地圖應用程序,默認情況下使用 3D 視圖。 因此, MKMapCamera
設置在開頭(音高值為45
)。 但是,我想為用戶提供禁用 3D 地圖的選項,以防他們更喜歡 2D 地圖。 所以,為了使視圖之間的開關,我將(改變相機的俯仰0
在2D中, 45
在3D)和禁用/啟用改變它( setPitchEnabled = NO/YES
)。
出於某種原因,在禁用音高后,即在我曾經設置[_mapView setPitchEnabled:NO]
,我無法再啟用 3D 視圖,我不能[_mapView setPitchEnabled:NO]
更改為YES
(在嘗試更改它之后)回到YES
,當它在NSLog
打印時, pitchEnabled
將其值保持為NO
)。 因此我無法從 2D 回到 3D。 你知道是什么導致了這種情況嗎? 這非常令人困惑,因為我嘗試以相同的方式啟用和禁用旋轉( [_mapView setRotationEnabled:NO]
或YES
),在這種情況下,它可以在這兩種情況下完美地工作。 但不是與音高 - 禁用音高后,我無法再啟用它。 下面是在開始時設置相機的函數 ( setCamera
) 和在模式之間切換的函數 ( toggleViewMode
)。
//Function that sets the 3D-view in the beginning
-(void)setCamera {
CLLocationCoordinate2D userLocation;
userLocation.latitude = self.locationManager.currentLatitude;
userLocation.longitude = self.locationManager.currentLongitude;
if(_cameraSet == YES) {
NSLog(@"Camera is set already, return");
return;
}
if ([_mapView respondsToSelector:@selector(camera)] && _show3Dmap) {
_cameraSet = YES;
[_mapView setShowsBuildings:NO];
MKMapCamera *newCamera = [[_mapView camera] copy];
[newCamera setPitch:45.0];
[newCamera setHeading:0.0];
[newCamera setAltitude:500.0];
[_mapView setCamera:newCamera animated:NO];
}
}
//Toggle between 2D and 3D
-(void)toggleViewMode:(BOOL)birdView {
if(birdView == YES) {
_mapView.camera.pitch = 45;
[_mapView setPitchEnabled:YES];
} else {
_mapView.camera.pitch = 0;
[_mapView setPitchEnabled:NO];
}
}
}
在別處找到了答案。 您還必須設置相機。
這是一個示例相機初始化:
MKMapCamera *newCamera = [[self.mapView camera] copy];
[newCamera setPitch:45.0];
[newCamera setHeading:90.0];
[newCamera setAltitude:500.0];
[self.mapView setCamera:newCamera animated:YES];
請參閱蘋果文檔中的討論。
[ https://developer.apple.com/documentation/mapkit/mkmapview/1452277-camera#discussion][1]
您必須使用 pitch 屬性在 2D 和 3D 地圖視圖之間切換
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.