に変換してください。説明のために前の質問を更新してください。CLLocationCoordinate2Dの文字列を配列
var breadcrumbs: [CLLocationCoordinate2D] = []
var path: [CLLocationCoordinate2D] = []
これは、CLLocationCoordinate2Dを配列に追加するために10秒ごとに呼び出されます。
func addBreadcrumb(){
let speed = (locationmanager.location?.speed)!
let speedRounded = speed.roundTo(places: 4)
let crumbCoordinate = locationmanager.location?.coordinate
breadcrumbs.append(crumbCoordinate!)
tripSpeeds.append(speedRounded)
}
ユーザーが旅行を終えると、ボタンをタップして次の機能が呼び出されます。これによりデータがfirebaseに送られます。私はストリングとして保存していますが、そうでなければエラーになります。
func submitTripPath(){
let tripID: String? = tripUID
let tripPath = String(describing: breadcrumbs) //This may be the problem
let speeds = String(describing: tripSpeeds)
var ref: FIRDatabaseReference!
ref = FIRDatabase.database().reference()
let tripRef = ref.child("TripPaths").child(tripID!)
let tripDictionary = ["routePath" : tripPath, "routeSpeed" : speeds] as [String : Any]
tripRef.updateChildValues(tripDictionary) { (err, ref) in
if err != nil {
print(err!)
return
}
}
}
別の画面では、「Firebaseデータベースリファレンス」の「座標の文字列」をうまく引き出すことができました。
let routePath = dict["routePath"] as! String //This may also be an issue
//output looks like this
"[__C.CLLocationCoordinate2D(latitude: 37.337728550000001, longitude: -122.02796406), __C.CLLocationCoordinate2D(latitude: 37.337716899999997, longitude: -122.02835139), __C.CLLocationCoordinate2D(latitude: 37.337694319999997, longitude: -122.0287719)]"
これをCLLocationCoordinate2Dの配列として使用して、以下を使用してポリラインを描画したいと考えています。 この文字列をCLLocationCoordinate2Dの使用可能な配列に変換する際に問題があります。
if (path.count > 1) {
let sourceIndex = path.count - 1
let destinationIndex = path.count - 2
let c1 = path[sourceIndex]
let c2 = path[destinationIndex]
var a = [c1, c2]
let polyline = MKPolyline(coordinates: &a, count: a.count)
mapContainerView.add(polyline)
}
あなたは私に知らせてください、元の配列の保存賭けFirebaseからそれを引っ張って、または文字列の変換の提案があれば。参考のために他のコードが必要な場合は、私にお知らせください。
[迅速なCLLocationCoordinate2Dへの文字列の変換]の可能な複製(https://stackoverflow.com/questions/28417512/convert-string-to-collocationcoordinate2d-in-swift) – shallowThought
これは重複しているとは思わない私はCLLocationCoordiante2Dの文字列を1つの文字列に持っていますが、それぞれの文字列ではありません。これはlat/lngを引き出すことができます。私はすでに個々の注釈でそれをやっています。あなたが私の質問にその答えを適用する方法を見たら、さらに説明できますか? –
最初の文字列はどのように作成されましたか?まず、より良いエンコーディング方法を考え出す方がよいでしょう。 – rmaddy