Местоположение никогда не обновляется даже в разных местах, в чем может быть проблема - PullRequest
0 голосов
/ 11 октября 2018

Я создаю приложение Map, которое отслеживает мое местоположение.Я установил MapKit и информацию, plist, а также CLLocation.

проблема: Кажется, что после запуска карты местоположение не будет обновлено, даже если я нахожусь в другом месте.

Ниже приведен код:

import UIKit
import MapKit
import CoreLocation


class ViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

    @IBOutlet weak var theMap: MKMapView!

    @IBOutlet weak var theLabel: UILabel!

    var manager:CLLocationManager!
    var myLocations: [CLLocation] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //Setup our Location Manager
        manager = CLLocationManager()
        //
        manager.delegate = self
        manager.desiredAccuracy = kCLLocationAccuracyBest
        manager.requestAlwaysAuthorization()
        manager.startUpdatingLocation()

        //Setup 
        theMap.delegate = self
        theMap.mapType = MKMapType.standard
            //MKMapType.satellite
        theMap.showsUserLocation = true

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

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

        theLabel.text = "\(locations[0])"
        myLocations.append(locations[0] as CLLocation)

        let spanX = 0.01
        let spanY = 0.01
        let newRegion = MKCoordinateRegion(center: theMap.userLocation.coordinate, span: MKCoordinateSpanMake(spanX, spanY))
        theMap.setRegion(newRegion, animated: true)

        if (myLocations.count > 1){
            let sourceIndex = myLocations.count - 1
            let destinationIndex = myLocations.count - 2

            let c1 = myLocations[sourceIndex].coordinate
            let c2 = myLocations[destinationIndex].coordinate
            var a = [c1, c2]
            // &a : direct get from this address of a
            let polyline = MKPolyline(coordinates: &a, count: a.count)
            theMap.add(polyline)
        }
    }

    func mapView(_ mapView: MKMapView!, rendererFor overlay: MKOverlay!) -> MKOverlayRenderer! {

        if overlay is MKPolyline {
            let polylineRenderer = MKPolylineRenderer(overlay: overlay)
            polylineRenderer.strokeColor = UIColor.blue
            polylineRenderer.lineWidth = 4
            return polylineRenderer
        }
        return nil
    }



}

1 Ответ

0 голосов
/ 13 ноября 2018

добавить это

  • добавить расстояние Фильтр сообщает locationManager, что обновление должно быть по крайней мере после заданного расстояния

  • добавление активностиТип дать ядроОпределение местоположения - вид деятельности, для которого вы получаете местоположения, чтобы его можно было оптимизировать, например, если человек останавливается в этом месте, может быть местоположение locationManager может молча остановиться.

    manager.distanceFilter = 10
    
    manager.activityType = .automotiveNavigation
    
...