2016-10-19 3 views
0

NMAPositioningManagerからcurrentPositionを取得するためにSwift 3(Xcode 8 in iOS 10)プロジェクトでMaps SDKを使用しています。ただし、isActiveはNMAPositioningManagerに対してtrueですが、currentPositionは常にnilです。有効な資格情報と有効な資格情報H(ERE_MAPS_APPID、HERE_MAPS_APP_CODE、およびHERE_MAPS_LICENSE_KEY)があります。Maps iOS SDKの問題(Swift3、Xcode 8)には現在の位置はありません。

iOS 10のXcode 8でSDKDemoを確認しましたが、正常に動作しますが、コードはObjective-Cにあります。どんなコメントもいただければ幸いです。

if let posMan : NMAPositioningManager = NMAPositioningManager.shared() { 
      if let currPos = posMan.currentPosition{ 
       if let geoCoordCenter = currPos.coordinates { 
        self.mapView.setGeoCenter(geoCoordCenter, with: NMAMapAnimation.none) 
       } 
      } 
     } 

答えて

3

位置決めは(私は参考のために、再びここでそれを貼り付け、あなたがやったと思いますが、それはあなたの切り取らに示されていない)を開始していることを確認します:

NMAPositioningManager.shared().startPositioning() 

は、その後、通常それはあなたまで多少時間がかかりますpositionは使用可能なので、dirctly PositionManagerを照会することはできません。

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.positionDidUpdate), name: NSNotification.Name.NMAPositioningManagerDidUpdatePosition, object: NMAPositioningManager.shared()) 
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.didLosePosition), name: NSNotification.Name.NMAPositioningManagerDidLosePosition, object: NMAPositioningManager.shared()) 

は、その後、あなたが好きな位置にコールバックで行います:私は、位置更新のコールバックを登録することをお勧め

func positionDidUpdate(){ 
     if let p = NMAPositioningManager.shared().currentPosition { 
      mapView.setGeoCenter(p.coordinates, with: NMAMapAnimation.bow) 
     } 
} 

func didLosePosition(){ 
    print("Position lost") 
} 

が、それはまだこのようにあなたのために働いていない場合、私に教えてください、とより完全なコードを追加します。

+0

ありがとうございます!私はオブザーバーを持っており、positionDidUpdateでは、実際に設定されたcurrentPositionを見ることができます。私の問題は、私のnavRoute(NMARoute)がnilであり、startTurnByTurnNavigationが私にエラーを与えることだと思います。 – ramo

関連する問題