2017-07-04 70 views
-1

我試圖將保存的Parse服務器中的PFGeopoint對象轉換爲註釋,但我似乎無法弄清楚,我不知道錯在哪裏。 我試圖應用這個問題的代碼:Converting Parse GeoPoint into a CLLocation in Swift但我仍然無法弄清楚。將PFGeoPoint轉換爲地圖上的註釋

這裏是我的代碼:

import UIKit 
import MapKit 
import CoreLocation 
import Parse 

class MapVC: UIViewController, MKMapViewDelegate { 


fileprivate let locationManager = CLLocationManager() 
fileprivate var startedLoadingPOIs = false 
fileprivate var places = [Place]() 


var descLocation: PFGeoPoint = PFGeoPoint() 
var mapHasCenteredOnce = false 

    @IBOutlet weak var mapView: MKMapView! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     mapView.delegate = self 

     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
     locationManager.startUpdatingLocation() 
     locationManager.requestWhenInUseAuthorization() 
     mapView.userTrackingMode = MKUserTrackingMode.followWithHeading 

    } 

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 

     var annotationView: MKAnnotationView? 

     if annotation.isKind(of: MKUserLocation.self) { 
      annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "User") 
      annotationView?.image = UIImage(named: "loc.png") 
     } 

     return annotationView 
    } 






} 




extension MapVC: CLLocationManagerDelegate { 




    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 



     //1 
     if locations.count > 0 { 
      let location = locations.last! 
      print("Accuracy: \(location.horizontalAccuracy)") 

      //2 
      if location.horizontalAccuracy < 100 { 
       //3 
       manager.stopUpdatingLocation() 
       let span = MKCoordinateSpan(latitudeDelta: 0.014, longitudeDelta: 0.014) 
       let region = MKCoordinateRegion(center: location.coordinate, span: span) 
       mapView.region = region 

       if !startedLoadingPOIs { 
        startedLoadingPOIs = true 
        let loader = PlacesLoader() 
        loader.loadPOIS(location: location, radius: 1000) { placesDict, error in 
         if let dict = placesDict { 


          let query = PFQuery(className: "posts") 
          if let latitude = (PFUser.current()?["location"] as AnyObject).latitude { 
           if let longitude = (PFUser.current()?["location"] as AnyObject).longitude { 
            let geoPoint = PFGeoPoint(latitude: latitude, longitude: longitude) 
            query.whereKey("postLocation", nearGeoPoint: geoPoint, withinKilometers: 1) 
           } 
          } 
          query.findObjectsInBackground { (objects: [PFObject]?, error: Error?) in 
           if error == nil { 



            for object in objects! { 
             let pfObject = object as PFObject 

             let caption = pfObject["title"] as! String 

             self.descLocation = object["postLocation"] as! PFGeoPoint 

             let latitude: CLLocationDegrees = self.descLocation.latitude 
             let longitude: CLLocationDegrees = self.descLocation.longitude 
             let location = CLLocation(latitude: latitude, longitude: longitude) 

             let place = Place(location: location, name: caption) 
             self.places.append(place) 
             let annotation = PlaceAnnotation(location: place.location!.coordinate, title: place.placeName) 
             DispatchQueue.main.async { 
             self.mapView.addAnnotation(annotation) 
             } 

            } 
           } 
          } 



         } 
        } 
       } 


} 
} 
} 


} 
+0

歡迎SO!請查看以下內容並添加您收到的幫助某人回答的錯誤: https://stackoverflow.com/help/how-to-ask – garfbradaz

回答

0

我只是有這樣的阻塞操作,除去他們二uanessacry線,它爲我工作。

loader.loadPOIS(位置:位置,半徑:1000){placesDict,錯誤 如果讓字典= {placesDict