2017-03-17 22 views
0

私は、ユーザーの向きに応じて常に回転する簡単なナビゲーションアプリケーションを作りたいと考えています。私はアンドロイドのためのいくつかの答えを見てきましたが、まだSwiftで動作するものは見つかりませんでした。Swiftのユーザーの向きに応じてマップボックスの地図を回転

私は以下のことを試しましたが、私にとってはうまくいかず、私が探しているものに近づいているかどうかは不明です。

私はXcodeとSwiftにはかなり新しく、分かりづらいことがありますので、簡単に私に行ってください!

+0

何回転しますか? – Starlord

+0

マップ自体です。そのため、ユーザーの位置を基準にしたマップ上のポイントが北に向いている場合、ユーザー/電話の向きにかかわらず、ポイントが常に北を指し示すようにマップが回転します。 – Dan

答えて

0

mapViewのプロパティは、directionです。これはユーザーが設定できます。このプロパティの値を変更すると、マップビューが直ちに更新されます。変更をアニメートする場合は、代わりに-setDirection:animated:メソッドを使用してください。方向は真北からの相対角度で測定マップのための新しい方向、

ある

func setCenter(_ centerCoordinate: CLLocationCoordinate2D, zoomLevel: Double, direction: CLLocationDirection, animated: Bool) 

:または、以下の方法を使用することができます。

CLLocationManagerのstartUpdatingHeadingメソッドを使用して、北からのオフセットを計算して定期的に呼び出すことができます。完了ハンドラが必要な場合は、このメソッドの別のバージョンがあります。

** EDIT **

あなたは携帯電話が向いている方向を抽出するために、次のコードを使用することができます。これは実際には実際のデバイスからのコンソールに印刷されますが、数字をとって、コード内でデバイスがどのくらい北を指しているかを判断することができます。

import UIKit 
import CoreLocation 

class ViewController: UIViewController, CLLocationManagerDelegate { 

var locationManager:CLLocationManager! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    locationManager = CLLocationManager() 
    locationManager.delegate = self 
    locationManager.startUpdatingHeading() 
} 

func locationManager(_ manager: CLLocationManager, didUpdateHeading heading: CLHeading) { 

    print(heading.magneticHeading) 
} 
} 

私は今歯医者に相談していますが、1時間ほどで確認できます。

+0

ありがとうあなたの答えは、これは有望なようです。私の経験不足を許しますが、もう少し詳細に実装する方法を説明できますか? – Dan

0
func locationManager(_ manager: CLLocationManager, didUpdateHeading heading: CLHeading) { 
    // set mapView's direction to user's orientation, i.e. magnetic heading 
    mapView.direction = heading.magneticHeading 
} 
関連する問題