我想知道班级的情况。我在Parse网站上读到过,但我有一个问题似乎没有答案。
我需要保存PFGeoPoint并使其对所有使用我的应用程序的用户可见,我真的不知道为什么。能做到吗??
我的应用程序非常简单:你可以登录(PFGeoPoint)并在地图上的一个小喷泉(为寻找喷泉的人)的地方做个标记。我想让所有被标记的喷泉(由所有用户)对所有其他用户可见,除非我从parse中删除它。

@IBAction func changed(sender: UISegmentedControl) {

    switch rateFountain.selectedSegmentIndex
    {
        case 0:
            voto.text = "Good";
            break;
        case 1:
            voto.text = "Bad";
            break;
        default:
            voto.text = "Good";
            break;

    }
}

@IBAction func logout(sender: UIButton) {

    PFUser.logOut()
     print("Log Out Done")
     self.performSegueWithIdentifier("gotoLogin", sender: self)
}
@IBOutlet weak var map: MKMapView!

@IBAction func addFountain(sender: UIButton) {

    let ObFountain = PFObject(className: "Fountain")

    ObFountain["nome"] = nome.text
    ObFountain["voto"] = voto.text

    let fountain = MKPointAnnotation()
    fountain.coordinate = posizioneUtente
    fountain.title = nome.text
    fountain.subtitle = voto.text
    self.map.addAnnotation(fountain)


}
var MapViewLocationManager:CLLocationManager! = CLLocationManager()
var managerPosizione: CLLocationManager! //gestisce oggetti LocationManager
var posizioneUtente: CLLocationCoordinate2D!//coordinate



override func viewDidLoad() {
    super.viewDidLoad()

    managerPosizione = CLLocationManager() //inizializzo il locationManager che recupera la posizione utente
    managerPosizione.delegate = self
    managerPosizione.desiredAccuracy = kCLLocationAccuracyNearestTenMeters //setto l'accuratezza della nostra posizione con un errore di non oltre dieci metri
    managerPosizione.requestAlwaysAuthorization() // richiede da parte dell'utente utilizzatore l'attivazione delle funzioni di geolocalizzazione
    managerPosizione.startUpdatingLocation() // tiene traccia del cambiamento di posizione
        // Do any additional setup after loading the view.

}

func viewDidApperar(animated : Bool){
       }
//avvisa il delegate che le coordinate dell'utente sono state aggiornate
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
    posizioneUtente = userLocation.coordinate //salvo le coordinate dell'utente nella variabile

    print("posizione aggiornata - lat: \(userLocation.coordinate.latitude) long: \(userLocation.coordinate.longitude)")

    let span = MKCoordinateSpanMake(0.05, 0.05) // estensione dell'area da visualizzare

    let region = MKCoordinateRegion(center: posizioneUtente, span: span) // calcola le coordinate della regione

    mapView.setRegion(region, animated: true) //aggiorna la mapView
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

    //se l'annotation è la posizione dell'Utente allora esci dalla funzione e mostra il punto blu
    if annotation is MKUserLocation {
        return nil
    }

    //creo un id da associare ad ogni annotationView
    let reuseId = "punto"
    //se esistono troppi punti nella mappa, prende quello non visto e lo riutilizza nella porzione di mappa vista
    var puntoView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)

    //se non è stata ancora creata un'AnnotationView la crea
    if puntoView == nil {
        //creo un pin di tipo MKAnnotationView che rappresenta l'oggetto reale da inserire in mappa
        puntoView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        //cambio l'immagine standard del point annotation con una creata da me
        puntoView!.image = UIImage(named: "nella30.png")
        //sblocco la possibilità di cliccarlo per vedere i dettagli
        puntoView!.canShowCallout = true
    }
    else {
        //se esiste lo modifico con il nuovo point richiesto
        puntoView!.annotation = annotation
    }
    //restituisce un pointAnnotation nuovo o modificato
    return puntoView
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?){
    view.endEditing(true)
    super.touchesBegan(touches, withEvent: event)

}

我的愿望是,当我按了按钮和我的当前位置,并以好坏评级喷泉。并向所有使用app的用户显示。我对swift很陌生,所以你可以直接帮我编写代码。我非常感激

最佳答案

PFGeoPoint绝对是你想要的。为了提供一些背景信息,PFGeoPoint实际上是iOSCLLocation对象的包装器,该对象包含纬度/经度坐标。
你有两种情况需要处理:
装载所有附近的标记(喷泉)
创建/保存新标记
您应该创建另一个名为Fountain的解析类,或者您认为对应用程序最具描述性的类。这个类将包含geopoint以及您可能需要的任何其他信息。当用户创建新的Fountain对象时,分配位置和其他属性(标题、描述等),然后保存。
在映射本身上,您将需要查询Fountain对象,然后使用这些对象填充映射。您可能还希望将查询限制在附近的喷泉,以提高性能。
由于这是一个非常开放的问题,这里有一些例子供您参考,欢迎使用StackOverflow!
Query a GeoPoint from Parse and add it to MapKit as MKAnnotation
MapKit Tutorial with Swift in iOS8

关于ios - PFGeoPoint可以在 map 上永久保存某些内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33876577/

10-12 20:08