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:
3 – Modificar o nome da aba para MapKit e logo abaixo você pode acrescentar uma imagem para o menu:
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:
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ê:
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:
Para essa parte é isso até a parte 2!!
Ótimo tutorial, parabéns!