Здравствуйте, я использую местоположение в приложении iOS, я установил такую ​​точность:

 locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters

И я использую эту функцию, чтобы проверить точность

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(manager.location!.horizontalAccuracy)

    if locations.last!.horizontalAccuracy <= manager.desiredAccuracy{
        print(manager.location)
        location = locations.last!
        locationManager.stopUpdatingLocation()
        locationManager = nil           
    }
}

Проблема в том, что стек точности равен 1414 и никогда не достигает 100. Есть ли способ исправить эту проблему?

4
Panayiotis Irakleous 22 Дек 2015 в 20:40

2 ответа

Лучший ответ

Это ограничение оборудования, которое возможно в зависимости от вашего местоположения. Если вы пишете код в помещении, то GPS не будет работать (попробуйте подойти к окну), поэтому вы полагаетесь на Wi-Fi, который может иметь очень плохую точность там, где вы находитесь, или на вышки сотовой связи, которые нигде не очень точны. .

3
gnasher729 22 Дек 2015 в 17:59

Что означают горизонтальная точность и вертикальная точность определения местоположения?

Значение 1414 для horizontalAccuracy указывает, что горизонтальное положение (широта / долгота) может отличаться на 1414 м (это всего лишь приблизительная ошибка). Вероятно, это место определяется триангуляцией вышек сотовой связи или данными о местоположении Wi-Fi. Местоположение GPS обычно сообщает 100 м или лучше.

Для построения кажется, что 1414 - это константа, которую предоставляет CLLocationManager, если он определил ваше местоположение на основе триангуляции вышек сотовой связи. В моем тестировании, если он определил ваше местоположение на основе Wi-Fi, он дает горизонтальную точность 65 м.

1
2 revs 23 Май 2017 в 11:46