Swift GeoPoint获得所有用户的位置ios

时间:2016-01-13 18:36:11

标签: ios swift geolocation mapkit core-location

我正在尝试制作一个应用,每个人都可以在同一张地图上看到每个人的位置。我找不到任何关于如何在同一地图上检索所有用户位置的教程。

我已经设法制作一个脚本,用这个脚本将用户位置上传到Parse:

PFGeoPoint.geoPointForCurrentLocationInBackground {


            (geoPoint: PFGeoPoint?, Error : NSError?) -> Void in
   if let geoPoint = geoPoint{

        PFUser.currentUser()? ["location"] = geoPoint
    PFUser.currentUser()?.saveInBackground()

我还设法获得当前用户的位置。

任何人都知道如何展示每个人的位置,而不仅仅是我的位置?

感谢您的时间和帮助。我是Swift的新手,请告诉我是否需要提供更多信息。

这是我的显示代码。

PFGeoPoint.geoPointForCurrentLocationInBackground {


            (geoPoint: PFGeoPoint?, Error : NSError?) -> Void in
   if let geoPoint = geoPoint{

        PFUser.currentUser()? ["location"] = geoPoint
    PFUser.currentUser()?.saveInBackground()
self.MapView?.showsUserLocation = true
      self.MapView?.delegate = self
        MapViewLocationManager.delegate = self
        MapViewLocationManager.startUpdatingLocation()
     self.MapView?.setUserTrackingMode(MKUserTrackingMode.Follow, animated: false)




  self.locationManager.requestAlwaysAuthorization()

        self.locationManager.requestWhenInUseAuthorization()

        if CLLocationManager.locationServicesEnabled(){

    self.locationManager.delegate = self
            self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
            self.locationManager.startUpdatingLocation()
        }





        func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocationManager]){
        var locValue:CLLocationCoordinate2D = (manager.location?.coordinate)!
        print("locations = \(locValue.latitude) \(locValue.longitude)")

外部ViewWDidLoad

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


        let location = locations.last
        let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)

        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))

        self.MapView?.setRegion(region, animated: true)

        self.locationManager.stopUpdatingLocation()



    }

1 个答案:

答案 0 :(得分:0)

让所有用户定位并不像您想象的那么简单。常规应用程序在后台运行的最多时间。在后台应用程序可以处于后台或暂停或终止状态(about states)。您必须从这些状态中获取位置。
如何实现:您应该为应用启用后台模式以进行位置跟踪。为简单起见 - 对所有用户使用重要的位置跟踪,但准确度约为500米。
为了获得更高的准确性(但更多难以实施),您可以向用户发送静默推送通知( about silent push),它将应用程序从已终止或暂停状态唤醒到后台状态,现在您可以获取并将用户当前位置发送到您的服务器。