1

クエリから 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
    }
}

現在、arrayOfPFObject4 回実行すると、4 つの注釈ピンが緑色で表示されますが、そのうちの 1 つ (現在のユーザー) を赤色にしたいと考えています。すべてのユーザーに固有のメール ID を保存しているので、それを使用して現在のユーザーと残りのユーザーを区別できます

  1. したがって、このようなものをmapViewメソッドに記述したいのですが、mapViewは座標項目配列を彼のスコープにないため認識しません:

    if(String(coordinateItem["email"]) == String((currentUser?.valueForKey("email"))!))

    {

        annotationView?.pinTintColor = UIColor.redColor()
    
        }
        else
        {
        annotationView?.pinTintColor = UIColor.greenColor()
        }
    
  2. このアプローチは機能しないと思いますが、別のメモとして、次のように1つのクエリを追加して、クエリ結果で現在のユーザーを禁止できます

query.whereKey("objectId", notEqualTo: (currentUser?.valueForKey("objectId"))!)

これで、ループがarraOfPFObject3 回実行され、3 つの緑色の注釈が表示されます。しかし、再び主な問題に戻ります。つまり、現在のユーザーが赤色であることを意味する 4 番目のものをどのように描画するかということです。4 番目の位置座標は簡単にキャプチャできますが、今度はそれらを赤色で描画する方法を説明します。達成したいことをより明確にする必要がある場合は、お知らせください。

4

0 に答える 0