Swift: мой GMSMapView неожиданно равен нулю

Я пытаюсь следовать простому руководству по Google Maps. Он в основном получает адрес от пользователя, изменяет адрес на координаты широты и долготы на основе API карт Google, а затем перемещает представление карты на экране в эти координаты. Каждый шаг выше работает, кроме последнего. Я установил точки останова, чтобы увидеть, что вызывает мою ошибку потока 1: EXC_BAD_INSTRUCTION.

Согласно Xcode, мое представление Google Maps и камера равны нулю во время выполнения. Вот мой код для создания экземпляра моего представления Google Maps:

@IBOutlet weak var mapsView: GMSMapView! = GMSMapView.mapWithFrame(CGRectZero, camera: GMSCameraPosition.cameraWithLatitude(-33.86,
    longitude: 151.20, zoom: 6))

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

                    let coordinate = CLLocationCoordinate2D(latitude: self.mapTasks.fetchedAddressLatitude, longitude: self.mapTasks.fetchedAddressLongitude)
                let camera = GMSCameraPosition.cameraWithTarget(coordinate, zoom: 14.0)
                self.mapsView.camera = camera

Через контрольные точки я знаю, что широта и долгота являются законными, а моя камера и просмотр карт равны нулю. Почему это?


person Jonathan Allen Grant    schedule 20.07.2015    source источник
comment
Значит, авария произошла в self.mapView.camera = camera ?   -  person ztan    schedule 20.07.2015
comment
Да, вот где это происходит   -  person Jonathan Allen Grant    schedule 20.07.2015
comment
Вы передали свой mapsView другому контроллеру? Или вы можете установить mapsView nil в некоторых других местах.   -  person ztan    schedule 20.07.2015
comment
Я переключил его на первый раз, когда настроил mapsView для перехода к своему местоположению. Нет ошибки потока, но он не показывает правильное местоположение   -  person Jonathan Allen Grant    schedule 20.07.2015


Ответы (1)


Вы удаляете свой IBOutlet? Если это так, попробуйте это:

@IBOutlet weak var mapsView: GMSMapView!

let latitude = self.mapTasks.fetchedAddressLatitude
let longitude = self.mapTasks.fetchedAddressLongitude
let coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
let camera = GMSCameraPosition.cameraWithTarget(coordinate, zoom: 14.0)

self.mapsView.camera = camera

Надеюсь, это работа! :)

person unknowncoder    schedule 03.12.2015