2017-03-15 12 views
-2

私はfirebaseから私の場所の値を追加しようとしていると私のアプリ内の注釈に変えようとしています。これは、私が動作していない分で持っているコードです!救いの手を探して、私はこの権利を得ることに非常に近いと感じるが、私は心のブロックを打った!Firebaseのマップへの位置

import UIKit 
import Firebase 
import MapKit 

class ViewController: UIViewController { 

@IBOutlet weak var mapView: MKMapView! 

let locationsRef = FIRDatabase.database().reference(withPath: "locations") 


override func viewDidLoad() { 
    super.viewDidLoad() 
    locationsRef.observe(.value, with: { snapshot in 
     for item in snapshot.children { 
      guard let locationData = item as? FIRDataSnapshot else { continue } 
      let locationValue = locationData.value as! [String: Any] 

      let location = CLLocationCoordinate2D(latitude: locationValue["lat"] as! Double, longitude: locationValue["lng"] as! Double) 
      let name = locationValue["name"] as! String 
      self.addAnnotation(at: location, name: name) 


     } 
    }) 
} 



func addAnnotation(at location: CLLocationCoordinate2D, name: String) { 

    // add that annotation to the map 

     let annotation = MKPointAnnotation() 

     annotation.title = location["name"] as? String 

     annotation.coordinate = CLLocationCoordinate2D(latitude: location["latitude"] as! Double, longitude: location["lonitude"] as! Double) 

     mapView.addAnnotation(annotation) 



} 


} 

私のコードは、現在取り組んでいるが、私はこの問題を取得しています:私は、二重に文字列を変換について何かを読んだ

let location = CLLocationCoordinate2D(latitude: locationValue["lat"] as! Double, longitude: locationValue["lng"] as! Double) 

のコード行に関連
Could not cast value of type "NSTaggedPointerString' (0x10a708d10) to 'NSNumber' (0x109d10488). 

この行に文字列はありませんか?誰でも助けてくれますか?

は、あなたが最も可能性の高いあなたのFirebaseデータベースにStringオブジェクトとして座標を格納しているコードの字幕

Subtitle

アップデートエラー

Error

+1

"動作しない" 説明し、サンプルを記載してくださいだけでletここを削除

var location: CLLocationCoordinate2D! if let lat = locationValue["lat"] as? String { // stored as String let lng = Double(locationValue["lng"] as! String)! location = CLLocationCoordinate2D(latitude: Double(lat)!, longitude: lng) } else { // stored as a floating point number let lat = locationValue["lat"] as! Double let lng = locationValue["lng"] as! Double location = CLLocationCoordinate2D(latitude: lat, longitude: lng) } 

EDIT 2

: いずれかの方法は、ここにあなたのエラーのためのソリューションですあなたのJSONデータ –

+0

ここではあまりにも苦労しています - あなたのメソッド 'addAnnotation'では、辞書はもうありません。既に場所と名前があります。これらの変数を使用してください。 – Russell

答えて

0

を更新しました。それがそのエラーを引き起こす最も一般的な理由です。その場合は、データベースの

いくつかの場所のエントリがStringオブジェクト、浮動小数点数として他人として格納されている

let lat = Double(locationValue["lat"] as! String) 
let lng = Double(locationValue["lng"] as! String) 
let location = CLLocationCoordinate2D(latitude: lat, longitude: lng) 

次のアップデートを試してみてください。一貫した構造(つまり、それらのすべてが文字列または複素数)である必要があります。

Error line

+0

正しい方向に私を向けることができますか?サブタイトルに応じて注釈を表示したり非表示にすることができます。私は、 "all"、 "skateparks"、 "street skating"の3つのオプションでテーブルビューを作成する必要があると思っています。特定のビューをクリックすると、それらの注釈のみが表示されます – Cal

関連する問題