埋め込みをiPhoneが向いている方向に常に向けるようにすることは可能ですか?基本的には、自分のアプリで地図アプリのローテーション機能を模倣したいと思っています。コンパスの向きを使用してMapViewを回転させる
iPhone SDKが機能を公開していないことがわかりました。しかし、CGAffineTransformMakeRotate
を使ってビュー全体を回転させることができるのだろうかと思います。タッピングやズームに影響しますか?より良い方法がありますか?
埋め込みをiPhoneが向いている方向に常に向けるようにすることは可能ですか?基本的には、自分のアプリで地図アプリのローテーション機能を模倣したいと思っています。コンパスの向きを使用してMapViewを回転させる
iPhone SDKが機能を公開していないことがわかりました。しかし、CGAffineTransformMakeRotate
を使ってビュー全体を回転させることができるのだろうかと思います。タッピングやズームに影響しますか?より良い方法がありますか?
です。
- (void)locationManager:(CLLocationManager *)manager
didUpdateHeading:(CLHeading *)newHeading
{
double rotation = newHeading.magneticHeading * 3.14159/180;
CGPoint anchorPoint = CGPointMake(0, -23); // The anchor point for your pin
[mapView setTransform:CGAffineTransformMakeRotation(-rotation)];
[[mapView annotations] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
MKAnnotationView * view = [mapView viewForAnnotation:obj];
[view setTransform:CGAffineTransformMakeRotation(rotation)];
[view setCenterOffset:CGPointApplyAffineTransform(anchorPoint, CGAffineTransformMakeRotation(rotation))];
}];
}
別のsollutionは、MKMapViewにiOSの5で追加された新しいメソッドを使用しています。 SWIFT 3.0の
//For Left button
MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem
alloc]initWithMapView:_mapView];
self.navigationItem.leftBarButtonItem = buttonItem;
// For Right Button
MKUserTrackingBarButtonItem *buttonItem = [[MKUserTrackingBarButtonItem
alloc]initWithMapView:_mapView];
self.navigationItem.rightBarButtonItem = buttonItem;
3.0 iPhoneアプリケーションプログラミングガイドのDevice Support
を見ると、磁力計(別名コンパス)に関する情報が見つかります。見出し情報の取得が始まったら(didUpdateHeading
メソッドを使用)、コンパスデータを取得して、マップビューに適用する適切な回転変換値を計算することができます。
ズームを処理するかどうか不明です。標準地図アプリケーションでは、ピンチズームを開始するとすぐにコンパスの見出しの追跡が停止することに気付きました。
また、位置の方向は度で、変換の回転角度はラジアンであることに注意してください。
正常に動作することを確認できます。ここで私が使用しているコードです:
[mapView setTransform:CGAffineTransformMakeRotation(-1 * currentHeading.magneticHeading * 3.14159/180)];
mapView
はMapViewのではなく、あなたがマップの回転を補正するために、次のコードを使用することができ、注釈を回転させるには、私のMKMapViewインスタンス
上記のコードの作品のような何かをするかもしれないマップは、ユーザーの場所に集中したくない場合は、それはそれを
public func mapViewDidFinishLoadingMap(_ mapView: MKMapView) { mapView.setUserTrackingMode(.followWithHeading, animated: false) }
を無視しますマップビューを回転するにはどうしますか?注釈はどうですか?トランスフォームはどのようにそれらにも適用されますか? –
私はあなたの質問の答えを以下に掲載しました。 – thijsai
:
は見てみましょう。mapViewDidFinishLoadingMap
にラインを入れていることを確認してくださいまたはあなたがこの
public func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading)
{
if(CLLocationCoordinate2DIsValid(mapView.centerCoordinate))
{
mapView.camera.heading = newHeading.trueHeading
}
}
シンプルなソリューション:あなたはnavigationVontrollerはこれを試して使用する場合http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html
- (void)setUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated;
iOS6でこの機能を使用するとどうなりますか?北向きの地図を回転できますか?私は地図を方向づけしようとしていますが、失敗しています。 – Meera