クエリから 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
4 回実行すると、4 つの注釈ピンが緑色で表示されますが、そのうちの 1 つ (現在のユーザー) を赤色にしたいと考えています。すべてのユーザーに固有のメール ID を保存しているので、それを使用して現在のユーザーと残りのユーザーを区別できます
したがって、このようなものをmapViewメソッドに記述したいのですが、mapViewは座標項目配列を彼のスコープにないため認識しません:
if(String(coordinateItem["email"]) == String((currentUser?.valueForKey("email"))!))
{
annotationView?.pinTintColor = UIColor.redColor() } else { annotationView?.pinTintColor = UIColor.greenColor() }
このアプローチは機能しないと思いますが、別のメモとして、次のように1つのクエリを追加して、クエリ結果で現在のユーザーを禁止できます
query.whereKey("objectId", notEqualTo: (currentUser?.valueForKey("objectId"))!)
これで、ループがarraOfPFObject
3 回実行され、3 つの緑色の注釈が表示されます。しかし、再び主な問題に戻ります。つまり、現在のユーザーが赤色であることを意味する 4 番目のものをどのように描画するかということです。4 番目の位置座標は簡単にキャプチャできますが、今度はそれらを赤色で描画する方法を説明します。達成したいことをより明確にする必要がある場合は、お知らせください。