我想用绿色表示从查询到Parse的所有用户坐标,但我想要用红色的用户(当前)之一。
以下是我现在所拥有的
import UIKit
import MapKit
class MultipleAnnotationViewController: UIViewController, MKMapViewDelegate
{
var arrayOfPFObject: [PFObject] = [PFObject]()
var lat_ :Double = 0
var long_ :Double = 0
@IBOutlet weak var dispAnnotation: MKMapView!
let currentUser = PFUser.currentUser()
override func viewDidLoad()
{
super.viewDidLoad()
dispAnnotation.delegate = self
for coordinateItem in arrayOfPFObject
{
let pointAnnotation = MKPointAnnotation()
self.lat_ = coordinateItem["Latitude"] as! Double
self.long_ = coordinateItem["Longitude"] as! Double
pointAnnotation.coordinate = CLLocationCoordinate2D(latitude: self.lat_, longitude: self.long_)
dispAnnotation.addAnnotation(pointAnnotation)
}
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
{
guard !(annotation is MKUserLocation)
else
{ return nil }
let identifier = "com.domain.app.something"
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView?.pinTintColor = UIColor.greenColor()
annotationView?.canShowCallout = true
} else {
annotationView?.annotation = annotation
}
return annotationView
}
}
目前如果arrayOfPFObject
运行四次,我会得到四个绿色的注释引脚,但我希望其中一个(当前用户)为红色。我将电子邮件ID存储为所有用户都是唯一的,因此我可以使用它来区分用户的当前和其余部分
所以我想在我的mapView方法中编写这样的东西,但是mapView不会识别coordinateItem数组,因为它不在他的范围内:
if(String(coordinateItem["email"]) == String((currentUser?.valueForKey("email"))!))
{
annotationView?.pinTintColor = UIColor.redColor()
}
else
{
annotationView?.pinTintColor = UIColor.greenColor()
}
我认为这种方法不会起作用,然后我可以通过添加一个查询来阻止查询结果中的当前用户
query.whereKey("objectId", notEqualTo: (currentUser?.valueForKey("objectId"))!)
现在我的arraOfPFObject
循环将运行三次,我将获得三个绿色注释。但现在再回到主要问题,如何绘制第四个,这意味着当前用户是红色的。我可以轻松捕捉第四个位置坐标,但现在如何用红色绘制它们。请让我知道如果我需要更清楚我想要达到的目标。