Firebaseを使用して注釈をmapViewに取得しています。これは、以下を介して行われます。注釈座標を使用して注釈を削除する
func getMarkers() {
dbRef.observe(.value, with: { (snapshot) in
for buildings in snapshot.children {
let buildingsObject = Buildings (snapshot: buildings as! FIRDataSnapshot)
let latDouble = Double(buildingsObject.latitude!)
let lonDouble = Double(buildingsObject.longitude!)
self.telephoneNumber = buildingsObject.number
let annotation = myAnnotationView.init(title: buildingsObject.content!, coordinate: CLLocationCoordinate2D.init(latitude: latDouble!, longitude: lonDouble!), duration: buildingsObject.duration!, cost: buildingsObject.cost!, info: "", timestamp: buildingsObject.timestamp, contactNumber: buildingsObject.number!, addedBy: buildingsObject.addedByUser!)
self.mapView.addAnnotation(annotation)
print (snapshot)
}})}
myAnnotationViewは、AnnotationViewのカスタムクラスです。
地図に注釈を追加しても問題ありません。この問題は、ユーザーが注釈を削除する必要がある場合、その注釈をmapViewから削除する必要があります。私はすべてのユーザーの注釈を含む表を持っています。これでFirebaseコンソールが更新され、データは削除されます。ただし、アノテーションはマップ上に残ります。アプリをリセットするとアノテーションが更新されます。
正しいスナップショットを取得したdeletedChildsを監視する方法がありますが、削除する必要がある注釈を参照しているようです。
func removeMarkers() {
dbRef.observe(.childRemoved, with: { (snapshot) in
print (snapshot)
})}
吐き出しされているスナップショットはここにある:
Snap (-KTo3kdGGA_-rfUhHVnK) { //childByAutoID
addedByUser = TzDyIOXukcVYFr8HEBC5Y9KeOyJ2;
content = "Post";
cost = 500;
duration = Monthly;
latitude = "25.0879112000924";
longitude = "55.1467777484226";
number = 1234567890;
timestamp = "Tue 11 Oct";
}
だから私の質問は、どのように私は、このスナップショットにある注釈を削除することができますか?どういうわけかその座標を参照して、そのようにアノテーションを削除できますか?私はStackを見てきましたが、主にすべての注釈を削除する方法について言及しています。
多くのありがとうございます。 D
完全に作業しました。これは決して考えなかったでしょう。多くのありがとう@TheAppMentor –
@TheAppMentorに感謝します。私は私の特定のコードの解決策を探しており、これはうまく機能します。 –