2017-07-04 24 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