2017-08-21 8 views
0

MKMapViewを使ってiPhone上に地図を表示しています。 Mapは、磁気ヘッド情報を使用してiPhone orentationに関して指向するように回転できます。MKMapがiOSで北に向いているときにコンパスが消える

私はコンパスを提示するのが好きですが、地図が北向きになるたびに消えます!電話機がもう少し回転しても再び表示されますが、これは気をそらすものです。

回転機能は、いくつかの条件がそうように満たされたときに切り替えられる:

@IBOutlet weak var mapView: MKMapView! 
// here comes some other code 
if settings.useMagneticHeading && validUserLocation 
{ 
    mapView.isRotateEnabled = true 
    mapView.showsCompass = true 
    locationService.startUpdatingHeading() 
} 

回転をデリゲートすることによって行われる。

func tracingHeading(currentHeading: CLLocationDirection) 
{ 
    if settings.useMagneticHeading && validUserLocation 
    { 
     mapView.camera.heading = currentHeading 
     mapView.setCamera(mapView.camera, animated: true) 
    } 
} 

CoreLocationものはlocationServiceシングルトンにカプセル化されます。

マップが北向きの場合でも、コンパスを表示するにはどうすればいいですか?私はこの振る舞いは文書化されていないと思われるバグではないと思います。 (iOS 9とiOS 10にあります)

答えて

1

あなたはそうです。この動作はバグではなく機能です。

iOS 11ではcompassVisibilityを使用できます。

let compass = MKCompassButton(mapView: mapView) 
compass.compassVisibility = .visible 

https://developer.apple.com/documentation/mapkit/mkcompassbutton/2890262-compassvisibility

enter image description here

+0

ありがとうございます!したがって、iOS 10をサポートする場合は、難しい方法でコンパスビューを実装する必要があります。奇妙なことに、iOS 11 Betaアップデートの前にこの機能が文書化されましたか? –

関連する問題