我想知道班级的情况。我在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/