gpt4 book ai didi

ios - PFGeoPoint 永久保存在 map 上的东西?

转载 作者:行者123 更新时间:2023-11-28 08:52:22 27 4
gpt4 key购买 nike

我想了解PFGeoPoint 类。我在 Parse 网站上读到了它,但我遇到了一个似乎没有答案的问题。我需要保存 PFGeoPoint 并使其对所有使用我的应用程序的用户可见,我真的不知道为什么。 PFGeoPoint 能做到吗??

我的应用程序非常简单:您可以登录 (PFUser) 并在 map 上标记一个小喷泉(对于正在寻找它的人)。我想让所有其他用户都可以看到(所有用户)标记的所有喷泉,除非我将其从解析中删除。

@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)

}

我的愿望是在我按下当前位置的按钮时设置喷泉,并将其评为好或坏。并向所有使用应用程序的用户展示这一点。我是 swift 的新手,所以您可能会直接帮助我编写代码。非常感谢

最佳答案

PFGeoPoint 绝对是您想要的。为您提供一些背景信息,PFGeoPoint 本质上是 iOS CLLocation 对象的包装器,其中包含纬度/经度坐标。

您有两种情况需要处理:

  1. 加载所有附近的标记(喷泉)
  2. 创建/保存新标记

您应该创建另一个名为 Fountain 的 Parse 类,或者您认为最能描述您的应用程序的任何内容。此类将包含地理点以及您可能需要的任何其他信息。当用户创建一个新的 Fountain 对象时,分配位置和其他属性(标题、描述等),然后保存。

在 map 上,您需要查询Fountain 对象,然后使用它们来填充 map 。您可能还想将查询限制在附近的喷泉以提高性能。

由于这是一个相当开放的问题,这里有一些示例供您引用,欢迎来到 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com