MKMAPVIEL: O setRegion não funciona!
-
07-07-2019 - |
Pergunta
Aaaarg ... ok, vamos me acalmar.
Alguém teve algum problema em definir a região de um MKMapView? Nunca funcionou comigo.
Este código:
-(void)setUserCenteredSpan:(MKCoordinateSpan)span{ // for this example, span = {0.5, 0.5}
// Current region (just initialised)
NSLog(@"%f, %f - %f, %f", self.region.center.latitude,
self.region.center.longitude,
self.region.span.latitudeDelta,
self.region.span.longitudeDelta);
// New Region
MKCoordinateRegion region = MKCoordinateRegionMake([[[self userLocation] location] coordinate],
span);
NSLog(@"%f, %f - %f, %f", region.center.latitude,
region.center.longitude,
region.span.latitudeDelta,
region.span.longitudeDelta);
// Region saved in MKMapView
[self setRegion:region animated:NO];
NSLog(@"%f, %f - %f, %f", self.region.center.latitude,
self.region.center.longitude,
self.region.span.latitudeDelta,
self.region.span.longitudeDelta);
}
Retorna esse log:
30.145127, -40.078125 - 0.000000, 0.000000
0.000000, 0.000000 - 0.500000, 0.500000
0.000000, 0.000000 - 0.000000, 0.000000
Você sabe por quê ??!
Muito obrigado, você pode me salvar de me matar x (
Mart
EDIT: Obviamente, estou no dispositivo, conectado à Internet.
Solução
Não entendo exatamente os registros anteriores, mas sei onde foi meu erro.
O MKMAPView instanciado não foi inicializado com um quadro, mas com uma máscara automática de automóveis definida para> 0.
Quando o método do setRegion foi chamado, minha opinião ainda não estava emoldurada. Eu acho que os valores da região são calculados de acordo com o quadro de visualização, para que esses valores não pudessem ser encontrados.
Basta definir o quadro antes de fazer um setRegion, e ele seria exibido normalmente.
Tchau !
Outras dicas
Seu primeiro log usa self.region.center.latitude
, mas não vejo isso em nenhum lugar do seu chamado para MKCoordinateRegionMake
. O log está lhe dizendo que tudo o que você está usando para fazer a região definir, tem um Lat/Long de 0/0 ...
Definir a máscara automática me ajudou.
[_mapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];