Ошибка при вставке координат в массив в Swift - PullRequest
0 голосов
/ 01 марта 2019

Невозможно преобразовать значение типа '[Dictionary]' в ожидаемый тип аргумента 'UnsafePointer'

Ошибка, возникающая при попытке вставить координаты в мой массив.

Вот мой код:

var locations: [CLLocationCoordinate2D] = []

    //Updating location + polylines
    @objc func update()
    {
        Annotationtimer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true, block: { (timerr) in

            let currentLat = self.locationManager.location?.coordinate.latitude
            let currentLong = self.locationManager.location?.coordinate.longitude


            let location = [(currentLat!), (currentLong!)]


            self.locations.append(location) //HERE IS THE ERROR
            print(self.locations)


     //Draw polyline on the map
     let aPolyLine = MKPolyline(coordinates: locations, count: locations.count)

     //Adding polyline to mapview
     self.mapView.addOverlay(aPolyLine)


        })
    }

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

Что я делаю не так?Как правильно вставить координаты?Я читал другие темы об этом, но ни одна из них на самом деле не работает.Так что я бы создал новый.

Почему не нравится?По крайней мере, вы можете сказать мне причину этого.

1 Ответ

0 голосов
/ 01 марта 2019

currentLat и currentLong переменные String, а тип массива CLLocationCoordinate2D.

Вам не нужно извлекать currentLat и currentLong, лучше сделать какэто: self.locations.append(self.locationManager.location?.coordinate)

Также мой совет - используйте guard, чтобы уберечь приложение от сбоя в ситуации, где self.locationManager.location == nil.

Итак, вот пример:

guard let currentLocation = self.locationManager.location else { return } // show error or something else self.locations.append(currentLocation)

...