我的应用程序只需打开地图视图和按钮即可。每次用户按下按钮时,我都希望在当前位置放置一个引脚。用户的坐标将发送到Firebase,然后向下拉,存储在注释中,然后存储在注释数组中。
当用户移动到新位置并按下按钮时,我希望仍然显示旧引脚(在当前启动期间)。 遇到麻烦:当我致电mapView.addAnnotations(annotationArray)
时,我只看到一个针脚(最近一个针脚),然后丢失其余针脚。
在viewDidLoad
中,我设置了纬度和经度观察器,以便将Firebase数据拉回来:
ref = Database.database().reference()
databaseHandle = ref?.child("Latitude").observe(.childAdded, with: { (snapshot) in
self.latitude = snapshot.value as? CLLocationDegrees
})
databaseHandle = ref?.child("Longitude").observe(.childAdded, with: { (snapshot) in
self.longitude = snapshot.value as? CLLocationDegrees
})
在myLatitude
和myLongitude
变量中存储当前位置:
func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) {
myLatitude = userLocation.coordinate.latitude
myLongitude = userLocation.coordinate.longitude
}
按下按钮时,用户的当前位置坐标存储在火力计中。它们会作为变量pullLatitude
和pullLongitude
:
@IBAction func tagLocationBtn(_ sender: Any) {
if myLongitude != nil && myLatitude != nil {
ref?.child("Latitude").childByAutoId().setValue(myLatitude!)
ref?.child("Longitude").childByAutoId().setValue(myLongitude!)
}
if pullLatitude != nil && pullLongitude != nil {
coordinate = CLLocationCoordinate2DMake(pullLatitude!, pullLongitude!)
annotation.coordinate = coordinate!
annotationArray.append(annotation)
mapView.addAnnotations(annotationArray)
}
提前谢谢!