Passo 4: botão Localizar-Me: mostrar a localização no mapa
primeiro passo, iremos recuperar a localização actual quando o Utilizador carregar no botão Localizar-me 🧭.
o Gestor de localização dá-lhe a localização actual num objecto CLLocation
com locationManager.location
. Este objeto contém diferentes informações, incluindo os valores das coordenadas de latitude e longitude.
adicione uma anotação ao mapa
vamos criar uma nova função que irá adicionar uma anotação ao MAPA nas coordenadas dadas.
a seguinte função cria um novo objeto MKPointAnnotation
, e adiciona – o ao mapa depois de remover todas as anotações anteriores. Ele também zooms e scrolls o mapa para colocar a anotação recém-adicionada no centro da tela.
agora que temos esta função, você pode chamá-la com as informações de localização atual que você deseja exibir, no seu botão função IBAction. Por agora, vamos colocar nil
como título, uma vez que ainda não temos esta informação.
updateLocationOnMap(to: locationManager.location, with: nil)
adicione o endereço completo da localização como título à anotação
agora, vamos adicionar o endereço completo da localização como título à anotação. A co-localização dá-nos uma facilidade de o fazer com CLGeocoder
.
Criar uma extensão para CLLocation
e adicione a seguinte função:
vai inverter as coordenadas geográficas de localização e dá-lhe um CLPlacemark
, contendo todas as informações necessárias para extrair o endereço postal completo.
as informações de endereço são armazenadas como abaixo no objeto Placemark. Para obter um valor de cadeia de caracteres do endereço completo, terá de concatenar os componentes de que necessita. Aqui está um exemplo para a Apple SEDE endereço na tabela abaixo:
Vamos adicionar uma função para o nosso CLLocation
extensão que nos dá o endereço completo diretamente. Por conveniência, você pode adicionar uma nova propriedade em uma extensão de CLPlacemark
. Neste exemplo, esta propriedade é chamada stringValue
.
agora vamos atualizar a chamada para updateLocationOnMap
com a nossa nova função lookUpLocationName
.
Criar e executar o aplicativo: agora, quando você pressionar a localizar-me, a sua localização actual é adicionado no mapa, que mostra a sua localização atual endereço completo!
adicione um marcador de um endereço de cadeia Ao mapa
A maior parte da função que escrevemos no Passo 3 para o botão locate-me também será usada nesta parte. Só adicionaremos uma nova função updatePlaceMark(to address: String)
e a chamaremos de validação TextField.
nesta função, vamos primeiro obter marcadores do valor string introduzido pelo usuário, em seguida, vamos atualizar o mapa com o primeiro placemark com o seu valor de endereço completo.
Note que geocodeAddressString
não é um local de pesquisa do recurso e, por isso para que ele funcione é necessário um endereço válido, e local de identificação, uma cidade, estado ou país no campo para ter um resultado.
Passo 6: Mostrar a localização em tempo Real no mapa
para mostrar a localização em tempo real, adicione a seguinte função de delegado na extensão CLLocationManagerDelegate
que já criámos.
o Gestor de localização irá chamar esta função automaticamente em actualizações de localização, de acordo com a política definida no início.
Passo 7: construir & executar
construir e executar a sua aplicação: Você agora tem um aplicativo de mapa que lhe mostra a sua localização atual, mostrando o endereço completo em tempo real, localizando-o em um toque de botão locate-me e permitindo que você procure por locais de um campo de texto.