Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // ViewController.m
- // Táxi Tarifa 2015 - Recife
- //
- // Created by Jose Bezerra on 1/4/15.
- // Copyright (c) 2015 Jose Bezerra. All rights reserved.
- //
- #import "ViewController.h"
- #import "SobreViewController.h"
- #import "MapViewController.h"
- #import <CoreLocation/CoreLocation.h>
- @interface ViewController (){
- CLLocationManager *locationManager;
- CLGeocoder *geocoder;
- CLPlacemark *origem;
- CLPlacemark *destinoplacemark;
- MKRoute *routeDetails;
- }
- @end
- @implementation ViewController
- @synthesize mapView;
- -(UIStatusBarStyle)preferredStatusBarStyle
- {
- return UIStatusBarStyleLightContent;
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- [calcular addTarget:self action:@selector(calcularact) forControlEvents:UIControlEventTouchUpInside];
- [origeminvisivel addTarget:self action:@selector(origemact) forControlEvents:UIControlEventTouchUpInside];
- [destinoinvisivel addTarget:self action:@selector(destinoact) forControlEvents:UIControlEventTouchUpInside];
- locationManager = [[CLLocationManager alloc] init];
- geocoder = [[CLGeocoder alloc] init];
- self->locationManager = [[CLLocationManager alloc] init];
- self->locationManager.delegate = self;
- [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
- if ([self->locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
- [self->locationManager requestWhenInUseAuthorization];
- }
- //[self.mapView setShowsUserLocation:YES];
- [self.mapView setDelegate:self];
- //TOP BAR
- self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"navbar.png"]];
- self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
- //HIDE
- destinoinvisivel.hidden = YES;
- origeminvisivel.hidden = YES;
- distanciabel.hidden = YES;
- distancia.hidden = YES;
- tempo.hidden = YES;
- tempolabel.hidden = YES;
- destinolabel.hidden = YES;
- destino.hidden = YES;
- mapView.hidden = YES;
- precolabel.hidden = YES;
- bandeira1.hidden = YES;
- bandeira1preco.hidden = YES;
- bandeira2.hidden = YES;
- bandeira2preco.hidden =YES;
- }
- -(void)viewDidUnload{
- [self setMapView:nil];
- [super viewDidUnload];
- }
- -(void)origemact{
- }
- -(void)destinoact{
- destinoinvisivel.hidden = YES;
- CLGeocoder *geocoder = [[CLGeocoder alloc] init];
- [geocoder geocodeAddressString:de.text completionHandler:^(NSArray *placemarks, NSError *error) {
- if (error) {
- UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Erro" message:@"Local Nao Encontrado,Por Favor Especifique" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- NSLog(@"%@", error);
- } else {
- origem = [placemarks lastObject];
- float spanX = 1.00725;
- float spanY = 1.00725;
- MKCoordinateRegion region;
- region.center.latitude = origem.location.coordinate.latitude;
- region.center.longitude = origem.location.coordinate.longitude;
- region.span = MKCoordinateSpanMake(spanX, spanY);
- de.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- origem.thoroughfare,
- origem.postalCode, origem.locality,
- origem.administrativeArea,
- origem.country];
- [self.mapView setRegion:region animated:YES];
- // [self addAnnotation:origem];
- }
- }];
- [de resignFirstResponder];
- }
- -(IBAction)iract{
- [self.mapView removeOverlay:routeDetails.polyline];
- de.hidden =YES;
- para.hidden = YES;
- calcular.hidden = YES;
- gps.hidden = YES;
- distanciabel.hidden = NO;
- distancia.hidden = NO;
- tempo.hidden = NO;
- tempolabel.hidden = NO;
- destinolabel.hidden = NO;
- destino.hidden = NO;
- mapView.hidden = NO;
- precolabel.hidden = NO;
- bandeira1.hidden = NO;
- bandeira1preco.hidden = NO;
- bandeira2.hidden = NO;
- bandeira2preco.hidden = NO;
- }
- -(void)calcularact{
- //POLYLINE
- if([de.text isEqualToString:@""] && [para.text isEqualToString:@""] && [de.text isEqualToString:@""] || [para.text isEqualToString:@""] && [para.text isEqualToString:@""] || [de.text isEqualToString:@""] ){
- UIAlertView *alerta = [[UIAlertView alloc] initWithTitle:@"Erro" message:@"Campo Vazio" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- }
- else{
- MKPlacemark *source = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(origem.location.coordinate.latitude,origem.location.coordinate.longitude) addressDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"",@"", nil] ];
- MKMapItem *srcMapItem = [[MKMapItem alloc]initWithPlacemark:source];
- [srcMapItem setName:@""];
- MKPlacemark *destination = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(destinoplacemark.location.coordinate.latitude,destinoplacemark.location.coordinate.longitude) addressDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"",@"", nil] ];
- MKMapItem *distMapItem = [[MKMapItem alloc]initWithPlacemark:destination];
- [distMapItem setName:@""];
- MKDirectionsRequest *request = [[MKDirectionsRequest alloc]init];
- [request setSource:srcMapItem];
- [request setDestination:distMapItem];
- [request setTransportType:MKDirectionsTransportTypeAutomobile];
- MKDirections *direction = [[MKDirections alloc]initWithRequest:request];
- [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
- // NSLog(@"response = %@",response);
- NSArray *arrRoutes = [response routes];
- [arrRoutes enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
- MKRoute *rout = obj;
- MKPolyline *line = [rout polyline];
- [self.mapView addOverlay:line];
- // NSLog(@"Rout Name : %@",rout.name);
- // NSLog(@"Total Distance (in Meters) :%f",rout.distance);
- NSArray *steps = [rout steps];
- // NSLog(@"Total Steps : %d",[steps count]);
- [steps enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
- // NSLog(@"Rout Instruction : %@",[obj instructions]);
- // NSLog(@"Rout Distance : %f",[obj distance]);
- }];
- }];
- }];
- //
- [self destinoannotation:destinoplacemark];
- [self addAnnotation:origem];
- CLLocation *location1 = [[CLLocation alloc] initWithLatitude:origem.location.coordinate.latitude longitude:origem.location.coordinate.longitude];
- CLLocation *location2 = [[CLLocation alloc] initWithLatitude:destinoplacemark.location.coordinate.latitude longitude:destinoplacemark.location.coordinate.longitude];
- NSString *rota =[NSString stringWithFormat:@"%.2f Km", [location1 distanceFromLocation:location2]/ 1000];
- [de resignFirstResponder];
- [para resignFirstResponder];
- int rotaint = [rota intValue];
- distancia.text = rota;
- destino.text = para.text;
- float x = rotaint *2.10 +4.32;
- NSString *bandeira1str = [NSString stringWithFormat:@"R$ %.2f",x];
- bandeira1preco.text = bandeira1str;
- float y = rotaint *2.54 + 4.32;
- NSString *bandeira2str = [NSString stringWithFormat:@"R$ %.2f",y];
- bandeira2preco.text = bandeira2str;
- tempo.text = [NSString stringWithFormat:@"%d minutos",routeDetails.expectedTravelTime/60];
- //---------------------------------------------------------------------------------------------
- de.hidden =YES;
- para.hidden = YES;
- calcular.hidden = YES;
- gps.hidden = YES;
- distanciabel.hidden = NO;
- distancia.hidden = NO;
- tempo.hidden = NO;
- tempolabel.hidden = NO;
- destinolabel.hidden = NO;
- destino.hidden = NO;
- mapView.hidden = NO;
- precolabel.hidden = NO;
- bandeira1.hidden = NO;
- bandeira1preco.hidden = NO;
- bandeira2.hidden = NO;
- bandeira2preco.hidden = NO;
- }
- }
- -(IBAction)getLocation:(id)sender{
- locationManager.delegate = self;
- locationManager.desiredAccuracy = kCLLocationAccuracyBest;
- [locationManager startUpdatingLocation];
- [de becomeFirstResponder];
- destinoinvisivel.hidden = NO;
- }
- - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
- {
- CLLocation *currentLocation = newLocation;
- [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
- if (error == nil && [placemarks count] > 0) {
- origem = [placemarks lastObject];
- de.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- origem.thoroughfare,
- origem.postalCode, origem.locality,
- origem.administrativeArea,
- origem.country];
- // [self addAnnotation:origem];
- } else {
- //NSLog(@"%@", error.debugDescription);
- }
- } ];
- }
- - (BOOL)prefersStatusBarHidden {
- return NO;
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- }
- - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evento
- {
- UITouch *touch = [[evento allTouches] anyObject];
- if ([para isFirstResponder] && [touch view] != para){
- CLGeocoder *geocoder = [[CLGeocoder alloc] init];
- [geocoder geocodeAddressString:para.text completionHandler:^(NSArray *placemarks, NSError *error) {
- if (error) {
- UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Erro" message:@"Local Nao Encontrado,Por Favor Especifique" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- NSLog(@"%@", error);
- } else {
- destinoplacemark = [placemarks lastObject];
- float spanX = 1.00725;
- float spanY = 1.00725;
- MKCoordinateRegion region;
- region.center.latitude = destinoplacemark.location.coordinate.latitude;
- region.center.longitude = destinoplacemark.location.coordinate.longitude;
- region.span = MKCoordinateSpanMake(spanX, spanY);
- para.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- destinoplacemark.thoroughfare,
- destinoplacemark.postalCode, destinoplacemark.locality,
- destinoplacemark.administrativeArea,
- destinoplacemark.country];
- [self.mapView setRegion:region animated:YES];
- // [self destinoannotation:destinoplacemark];
- [para resignFirstResponder];
- }
- }];
- }
- if ([de isFirstResponder] && [touch view] != de)
- {
- destinoinvisivel.hidden =YES;
- CLGeocoder *geocoder = [[CLGeocoder alloc] init];
- [geocoder geocodeAddressString:de.text completionHandler:^(NSArray *placemarks, NSError *error) {
- if (error) {
- UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Erro" message:@"Local Nao Encontrado,Por Favor Especifique" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- NSLog(@"%@", error);
- } else {
- origem = [placemarks lastObject];
- float spanX = 1.00725;
- float spanY = 1.00725;
- MKCoordinateRegion region;
- region.center.latitude = origem.location.coordinate.latitude;
- region.center.longitude = origem.location.coordinate.longitude;
- region.span = MKCoordinateSpanMake(spanX, spanY);
- de.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- origem.thoroughfare,
- origem.postalCode, origem.locality,
- origem.administrativeArea,
- origem.country];
- [self.mapView setRegion:region animated:YES];
- }
- }];
- [de resignFirstResponder];
- }
- [super touchesBegan:touches withEvent:evento];
- }
- // -------------------------------------------------------------------------------------------------------------------------------------------------------SEGUNDA VIEW CONTROLLER--------------------------------------
- // -----------------------------------------------------------------------------------------------------------
- - (IBAction)desearch:(UITextField *)sender{
- CLGeocoder *geocoder = [[CLGeocoder alloc] init];
- [geocoder geocodeAddressString:sender.text completionHandler:^(NSArray *placemarks, NSError *error) {
- if (error) {
- UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Erro" message:@"Local Nao Encontrado,Por Favor Especifique" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- NSLog(@"%@", error);
- } else {
- origem = [placemarks lastObject];
- float spanX = 1.00725;
- float spanY = 1.00725;
- MKCoordinateRegion region;
- region.center.latitude = origem.location.coordinate.latitude;
- region.center.longitude = origem.location.coordinate.longitude;
- region.span = MKCoordinateSpanMake(spanX, spanY);
- de.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- origem.thoroughfare,
- origem.postalCode, origem.locality,
- origem.administrativeArea,
- origem.country];
- [self.mapView setRegion:region animated:YES];
- // [self addAnnotation:origem];
- }
- }];
- }
- - (IBAction)addressSearch:(UITextField *)sender {
- CLGeocoder *geocoder = [[CLGeocoder alloc] init];
- [geocoder geocodeAddressString:sender.text completionHandler:^(NSArray *placemarks, NSError *error)
- {
- if (error) {
- UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"Erro" message:@"Local Nao Encontrado,Por Favor Especifique" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
- [alerta show];
- } else {
- destinoplacemark = [placemarks lastObject];
- float spanX = 1.00725;
- float spanY = 1.00725;
- MKCoordinateRegion region;
- region.center.latitude = destinoplacemark.location.coordinate.latitude;
- region.center.longitude = destinoplacemark.location.coordinate.longitude;
- region.span = MKCoordinateSpanMake(spanX, spanY);
- para.text = [NSString stringWithFormat:@"%@ %@ %@ %@ %@",
- destinoplacemark.thoroughfare,
- destinoplacemark.postalCode, destinoplacemark.locality,
- destinoplacemark.administrativeArea,
- destinoplacemark.country];
- [self.mapView setRegion:region animated:YES];
- // [self destinoannotation:destinoplacemark];
- }
- }];
- }
- - (void)destinoannotation:(CLPlacemark *)placemarkk {
- MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
- point.coordinate = CLLocationCoordinate2DMake(destinoplacemark.location.coordinate.latitude, destinoplacemark.location.coordinate.longitude);
- point.title = [placemarkk.addressDictionary objectForKey:@"Streeta"];
- point.subtitle = [placemarkk.addressDictionary objectForKey:@"Citya"];
- [self.mapView addAnnotation:point];
- }
- - (void)addAnnotation:(CLPlacemark *)placemarkk {
- MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
- point.coordinate = CLLocationCoordinate2DMake(origem.location.coordinate.latitude, origem.location.coordinate.longitude);
- point.title = [placemarkk.addressDictionary objectForKey:@"Street"];
- point.subtitle = [placemarkk.addressDictionary objectForKey:@"City"];
- [self.mapView addAnnotation:point];
- }
- //
- //PINPOINT
- - (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id <MKAnnotation>)annotation
- {
- static NSString *AnnotationViewID = @"annotationViewID";
- MKAnnotationView *annotationView = (MKAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
- if (annotationView == nil)
- {
- annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
- }
- annotationView.image = [UIImage imageNamed:@"pinpoint.png"];
- annotationView.annotation = annotation;
- return annotationView;
- }
- //POLYLINE
- - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay {
- if ([overlay isKindOfClass:[MKPolyline class]]) {
- MKPolylineView* aView = [[MKPolylineView alloc]initWithPolyline:(MKPolyline*)overlay] ;
- aView.strokeColor = [UIColor yellowColor];
- aView.lineWidth = 10;
- return aView;
- }
- return nil;
- }
- //
- //ZOOM
- /*
- -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
- {
- CLLocationCoordinate2D loc =[userLocation coordinate];
- MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 1000, 1000);
- [self.mapView setRegion:region animated:NO];
- }
- */
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement