Core Location e MapKit – Swift – Parte 1

On 1 de abril de 2015 by Pedro Duarte

Nesse tutorial iremos aprender funcionalidades importantes do CoreLocation que é um framework utilizado para determinar a localização do usuário e o MapKit que é utilizado para visualização de mapas, criação de rotas e regiões.

O que é o Mapkit

Para ensinar essa funções vamos implementar um aplicativo capaz de indicar sua localização, marca um restaurante próximo e mostrar informações importante sobre ele.

1 – No Xcode crie um novo projeto como Tabbed Aplication que inicializa um projeto com abas:

2 – No storyboard você vai perceber que a estrutura de abas foi criada. Vai até a primeira tela e apague seu conteúdo e arraste um MapKit View para o Storyboard. Lembre-se de usar contraints para o local e o tamanho ficar sempre correto:

1

 

3 – Modificar o nome da aba para MapKit e logo abaixo você pode acrescentar uma imagem para o menu:

2

 

4 – Modifique também o nome da classe FirstViewController e o nome do arquivo para MapKitViewController e por fim a classe do controller do storyboard:

3

 

5 – Utilizando Control e clique ligue o MKMapView até a classe MapKitViewController e crie um Outlet.

Agora o código para o Mapkit

6 – Quando você fizer isso irá perceber que o compilador não reconhece a classe mapView para isso tem que importar os framework necessários:

//  Created by Pedro Duarte on 31/03/15.
//  Copyright (c) 2015 Pedro Duarte. All rights reserved.
//

import UIKit
import CoreLocation //determina a localizacao do usuario
import MapKit

class MapKitViewController: UIViewController, CLLocationManagerDelegate{

7 –  Perceba que no item anterior eu acrescentei na nossa classe o CLLocationManagerDelegate faça isso e depois crie uma propriedade LocationManager:

 var locationManager = CLLocationManager() // propriedade para o location manager

e no viewDidLoad a inicializamos por padrão:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        locationManager.delegate = self // inicializada por padrao
        locationManager.requestWhenInUseAuthorization() // requisitar o uso da localizacao com o aplicativo em primeiro plano
        
    }

8 – O  location tem diversos métodos mas vamos implementar alguns deles:

//Este método é chamado todas as vezes que o nível de permissão da localização é alterado
    
    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        if status == CLAuthorizationStatus.AuthorizedWhenInUse{//esse if verifica se o status é autorizado enquanto o aplicativo esta em primeiro plano
            mapView.showsUserLocation = true//se o if for verdadeiro mostraremos a localização do usuario no mapView
            
            if let location = locationManager.location?.coordinate{//centralizamos o mapa na localizacao do usuario
                mapView.setCenterCoordinate(location, animated: true)
                
            } else{
                locationManager.startUpdatingLocation()//caso a localizacao do usuario nao exista estaremos procurando fela atravez desse metodo e esse metodo chama outro o didUpdateLocations em seguida
            }
        }
    }
    
    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
        locationManager.stopUpdatingLocation()
        
        if let location = locations.last as? CLLocation{
            mapView.setCenterCoordinate(location.coordinate, animated: true)
            mapView.camera.altitude = pow(2,11)
        }
        
        
    }
    
}

Usando location

9 – Agora para ser pedido ao usuário o uso de sua localização temos que adicionar a chave NSLOcationWhenInUseUsageDescription no Info.plist do projeto com um texto justificando a necessidade de uso da localização. Para adiciona-la vamos ate o arquivo do projeto na aba Info adicionaremos uma nova entrada e o value é o texto que o usuário irá vê:

4

 

10 – Quando você rodar o aplicativo o usuário recebera a pergunta se libera a localização ou não e se aceitar o mapa já ira se mover para a localização do usuário:

5

 

Para essa parte é isso até a parte 2!!

 

One Response to “Core Location e MapKit – Swift – Parte 1”

Deixe um comentário

O seu endereço de e-mail não será publicado.