2016-10-19 3 views
0

Я использую здесь Maps SDK в моем проекте в Swift 3 (в Xcode 8 для iOS 10), чтобы захватить текущую позицию из NMAPositioningManager. Однако, хотя isActive верно для NMAPositioningManager, currentPosition всегда равен нулю. У меня есть действительная позиция и действительные учетные данные H (ERE_MAPS_APPID, HERE_MAPS_APP_CODE и HERE_MAPS_LICENSE_KEY).Здесь проблема с SDK для карт iOS (Swift3, Xcode 8) имеет значение nil currentPosition

Я проверил SDKDemo с Xcode 8 для iOS 10, который работает нормально, но их код находится в 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() 

Тогда обычно это занимает некоторое время до вашего доступно положение, поэтому вы не можете запросить 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

Спасибо! У меня были наблюдатели и в позицииDidUpdate, я могу видеть, что currentPosition действительно установлен. Я думаю, что моя проблема в том, что мой navRoute (NMARoute) равен нулю, а startTurnByTurnNavigation дает мне ошибку. – ramo

Смежные вопросы