Por que a propriedade userLocation do MKMapView é um lixo… por um tempo?

Eu tenho uma Visualização de mapa definida no IB e está configurada para mostrar a localização do usuário.

No meu aplicativo, em-viewDidAppear, Eu consulto self.mapView.userLocation.location.coordinate e ele retorna com valores insanos, como:

latitude: 4.8194501961644877e-49
longitude: 2.2993313035571993e-59

No entanto, da próxima vez-viewDidAppear é chamado (depois que eu simplesmente mudei para outra visualização com guias e depois voltei para esta)userLocation A propriedade contém exatamente os valores corretos para minha localização atual.

Parece que, no momento da minha ligação inicial, ouserLocation A propriedade não foi inicializada, mas apesar de ter lido a documentação da Apple, não consigo ver nenhuma advertência em que diz que essa propriedade só é válida depois de fazer xxx.

Existe algo que tem que acontecer antesuserLocation é válido para uso ou devo apenas usarCLLocationManager e perguntar em vez disso?

Agradecemos antecipadamente por qualquer ajuda.

Infelizmente, a sugestão de Thomas não ajudou. O que descobri desde então é:

E seshowsUserLocation é NÃO, entãouserLocation nunca está definido corretamente e-MapView: didUpdateUserLocation: nunca é chamado, consequentemente, nunca recebo um valor de localização sensato.

Então, para obter a localização do usuário, tenho que definirshowsUserLocation para YES, no entanto, isso significa que depois que todas as minhas anotações foram adicionadas à visualização (sem incluir a localização do usuário), calculo o intervalo necessário para abranger todos eles e exibi-los no nível de zoom correto. Depois disso, a visualização salta para o lado enquanto a Visualização do Mapa exibe automaticamente a localização do usuário como o blob azul! Como nunca foi incluído nas anotações para calcular o nível de zoom, não posso incorporá-lo em meus cálculos. Aaargh!

Observe que quandoshowsUserLocation é SIM, então-MapView: didUpdateUserLocation: é chamado, mas somente depois de calcular todas as coordenadas das minhas anotações, não antes!

questionAnswers(3)

yourAnswerToTheQuestion