Pergunta

Saudações! Eu estou tentando usar o MKMapView sem quaisquer amostras de código da Apple, embora existam alguns outros lá fora, de diferentes clareza. (Eu sei, "Leia o manual amigável." Eu fiz isso, mas não é 100% claro, por isso, tenha comigo em um presente.)

Aqui está a situação. I têm uma MKMapView objecto, em que I se adicionou um conjunto de cerca de dez MKPinAnnotation fortes objectos. Por enquanto, tudo bem. Tudo é alloced / lançado sanely e não parece haver qualquer queixas dos Instruments.

Após a visualização inicial, para configurar um MKCoordinateRegion objecto com o ponto central na nossa primeira localização do pino, e um (arbitrária) espaço de 0,2 x 0,2. Eu, então, ligar para:

[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];

Wow! Isso funcionou bem.

Enquanto isso ... Eu também tenho um controle segmentado para permitir o movimento para cada local pin. Então, como eu torneira através da lista, o mapa anima a cada nova localização pin com um novo par de chamadas para setRegion: animado: e regionThatFits: ... ou pelo menos essa é a idéia.

Enquanto o mapa faz "viajar" para o novo local pino, o mapa em si não atualiza por baixo. Em vez disso, vejo o meu pino em um / branco-map fundo cinza ... até I deslocar o mapa em qualquer direção, no entanto ligeiramente. Em seguida, o mapa mostra através! (Se eu só estou movendo a uma curta distância do local pin anterior, eu costumo ver qualquer parte do mapa já foi carregado.)

Eu suspeito que eu estou fazendo algo estúpido aqui, mas eu não tenho sido capaz de descobrir o que, pelo menos não dos docs MapKit. Talvez eu estou usando as chamadas erradas? (Bem, eu preciso definir a região pelo menos uma vez, sim Movendo que cerca parece não ajuda embora?). Eu também tentei usando setCenterCoordinate: animado:. - mesmo problema

Estou assumindo nada neste momento (sem trocadilhos). Apenas tentando encontrar o meu caminho.

Clues boas-vindas / apreciada!

UPDATE: Chamando setRegion: animado: e regionThatFits: pela primeira vez, seguido de setCenterCoordinate: animado: ao atravessar a lista, tem nenhum efeito. achado interessante, porém: se eu mudar animado para NO em ambos os casos, as atualizações de mapas !!! Só quando ele é definido como YES. (WHA acontecer ?! é animado:? Quebrado que não pode ser ... ???)

Foi útil?

Solução

Acontece que a actualização do mapa não funciona ao usar o simulador. Quando tento setCenterCoordinate: animado:. no dispositivo, eu não obter o debaixo mapa atualização

Resumindo: eu estava confiando o simulador para coincidir com o dispositivo em termos de comportamento mapa de atualização. Infelizmente, eu estava enganado! Lição aprendida. "Não deixe isso acontecer com você." :)

Outras dicas

Você precisa invocar a chamada setRegion:animated: no contexto thread principal. Basta fazer algo como:

....
[self performSelectorOnMainThread:@selector(updateMyMap) withObject:nil waitUntilDone:NO];

}

-(void) updateMyMap {
    [myMap setRegion:myRegion animated:YES];    
}

e ele deve funcionar em qualquer caso (animadas ou não), com o mapa abaixo atualizado.

Hum estranho. O mapa atualiza no meu Mac, mesmo no simulador. Talvez uma configuração de rede (proxy ou qualquer outro) que impeça o widget mapa para baixar as telhas no simulador?

Mesmo que este é um velho tema que eu pensei que eu ia tocar com a minha experiência. Parece o mapa de animação única falha em dispositivos que executam o iOS 3.1.x eo 3.1.x. simulador em execução Meu dev iPod touch com 3.1.3 não zoom, se a animação está ligado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top