Можно ли регулярно выполнять тестирование в контроллере? - PullRequest
0 голосов
/ 25 июня 2019

В моем приложении я беру координаты моего пользователя, когда он находится в движении, чтобы показать ему траекторию, которую он взял. Но моя проблема в том, чтобы знать, когда пользователь останавливается, чтобы остановить текущую траекторию и отобразить ему эту траекторию на карте.

Мой код, чтобы знать, когда пользователь начинает свою траекторию, работает отлично, я делаю это с didUpdateLocations с distanceFilter 100.

Моя проблема в том, что я не могу знать, когда пользователь остановится. Я хочу знать, например, есть ли решение, чтобы узнать, когда я больше не буду получать обновления местоположений, и это будет означать, что траектория закончена. Я пытался с locationManagerDidPauseLocationUpdates, но моя программа, кажется, никогда не входит в эту функцию.

// Вот мой код, который получает обновление местоположения пользователя

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let mostRecentLocation = locations.last else {
        return
    }

    if !self.isTrajectStarted {

        if self.locations.count == 0 {
            print("First coordinate")

        } else if (self.locations.count == 1) {

            if self.locations[0].distance(from: mostRecentLocation)>150 { 
                print("traject begin")
            }
        }
    } else {
        print(" New location is %@", mostRecentLocation)
    }
}

1 Ответ

0 голосов
/ 08 июля 2019

Напишите новую логику для обнаружения остановки.

locationManagerDidPauseLocationUpdates, не будет вызван сразу после остановки.Обычно он вызывается через 5 минут (не задокументировано, это число, которое я видел в моих приложениях).

Вам необходимо написать логику, сначала классифицировав режим передвижения.Если ваше приложение регистрирует движение пользователя в транспортном средстве, вы должны знать, что когда скорость падает ниже 4-5 миль в час, пользователь либо получает сигнал светофора, либо достигает пункта назначения.Если вы не получите никаких обновлений в течение следующих 5 минут или около того, сделайте остановку или продолжите запись.

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

...