Red de conocimiento informático - Aprendizaje de programación - desarrollo de mapas ios cómo calcular la pendiente

desarrollo de mapas ios cómo calcular la pendiente

El desarrollo de Qiankupai para iOS le dará la respuesta:

//

//ViewController.m

//ios viene con anotaciones de mapas

//

//Wang Mumu creado el 15/12/3.

//////////////////

//////////////////*

Importar biblioteca

Antes de hacer referencia al mapa, intente probarlo en una máquina real. Si es un simulador, simplemente haga clic en el botón de la imagen de ubicación debajo de xcode cuando el programa se esté ejecutando.

Necesita usar información en. info.plist Agregue el campo NSLocationWhenInUseUsageDescription o NSLocationAlwaysUsageDescription. Donde:

NSLocationWhenInUseUsageDescription significa que la aplicación puede buscar información de ubicación actualizada cuando está en primer plano.

NSLocationAlwaysUsageDescription indica que la aplicación puede obtener datos de ubicación actualizados tanto en primer plano como en segundo plano (suspendido o finalizado).

*/

#import "ViewController.h"

#import

#import

@interface ViewController ()

{

MKMapView *_mapView;

CLLocationManager * locationManager;

CLLocation *ubicación;

}

@end

@implementation ViewController

- (void ) viewDidLoad {

[super viewDidLoad];

// Realice cualquier configuración adicional después de cargar la vista (generalmente desde una plumilla).

scrollEnabled = YES;

_mapView.delegate = self;

[self.view addSubview:_mapView];

if([[UIDevice currentDevice].systemVersion floatValue ] > 8.0f)

{

[self getUserLocation];

}

// LongPressGesture LongPressAddTap

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(lpgrClick:)];

[_ mapView addGestureRecognizer:lpgr];

}

/Obtener ubicación actual

- (void)getUserLocation

{

locationManager = [[ CLLocationManager alloc] init];

locationManager.delegate = self;

//kCLLocationAccuracyBest: mayor precisión cuando el dispositivo funciona con batería

locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

locationManager.distanceFilter = 50.0f;

if ((([[[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0))

{

[locationManager requestAlwaysAuthorization];

}

// Actualizar ubicación

[locationManager startUpdatingLocation];

}

#pragma mark-CLLocationManagerDelegate Después de la actualización de ubicación devolución de llamada

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations: (NSArray *)ubicaciones

{

/Detener actualización de ubicación

[locationManager stopUpdatingLocation];

CLLocation *loc = [ubicaciones firstObject];

CLLocationCoordinate2D theCoordinate;

// Longitud /latitude después de la actualización de la ubicación

theCoordinate.longitudeDelta=0.01;

//Establece el centro y el rango de visualización del mapa

MKCoordinateRegion theRegion;

elReg

ion.center=theCoordinate;

theRegion.span=theSpan;

[_mapView setRegion.theRegion];

ubicación = [ubicaciones últimoObjeto];

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

[geocoder reverseGeocodeLocation:location completeHandler: ^(NSArray *array, NSError *error)

{

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

[geocoder reverseGeocodeLocation:location completeHandler:^(NSArray *array, NSError *error) {

if (array.count & gt; 0)

{

CLPlacemark *placemark = [array objectAtIndex:0];

// Muestra todos los valores obtenido en la etiqueta Información

NSLog(@"%@",placemark.administrativeArea);

// Obtener información de la ciudad

NSString *city = placemark. administrativoArea;

p>

if (!city) {

// La información de la ciudad de los cuatro municipios principales no se puede obtener localmente y solo se puede obtener obteniendo la provincia (si la ciudad está vacía, se puede llamar municipio)

city = placemark.administrativeArea;

}

NSLog(@"Ciudad actual:%@ ",ciudad);

//Establezca el tipo de mapa que se mostrará y el tipo de mapa que se mostrará según la ubicación.

/Establezca el tipo de visualización del mapa y muestre el mapa de acuerdo con la posición del rango de la chincheta grande

MKPointAnnotation *pinAnnotation = [[MKPointAnnotation alloc] init];

pinAnnotation.coordinate = theCoordinate ;

pinAnnotation.title = ciudad;

[_mapView addAnnotation:pinAnnotation];

}

else if (error == nil && amp [recuento de matrices] == ​​0)

{

NSLog(@"No se devolvieron resultados.");

}

De lo contrario, if (error != nil)

{

NSLog(@"Se produjo un error = %@", error);

}

}];

}];

}];

;

}

// Este método se llama cada vez que se agrega un pin y le permite diseñar el pin

- (MKAnnotationView *)mapView: (MKMapView *)mapView viewForAnnotation:(id )annotation

{

// Determina si el pin está en el origen.

Si es así, no se agrega ningún pin

if([annotation isKindOfClass:[mapView.userLocation class]])

return nil;

static NSString *annotationName = @" anotación";

MKPinAnnotationView *anView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier.annotationName];

if(anView == nil)

{

anView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annotationName];

}

anView.rightCalloutAccessoryView puede configurar la vista correcta

return anView;

}

// Mantenga presionado para agregar un evento de pin

- (void)lpgrClick:(UILongPressGestureRecognizer *)lpgr

{

// Asegúrate de que el pin solo caiga cuando comience la pulsación larga

if(lpgr.state == UIGestureRecognizerStateBegan)

{

// Obtener el punto primero

CGPoint point = [lpgr locationInView:_mapView];

// Convertir el punto a coordenadas de latitud y longitud

CLLocationCoordinate2D center = [_mapView convertPoint: point toCoordinateFromView:_mapView];

MKPointAnnotation *pinAnnotation = [[ MKPointAnnotation alloc] init];

pinAnnotation.coordinate = center;

pinAnnotation .title = @"pulsación larga";

[_mapView addAnnotation :pinAnnotation];

}

}

//Calcular la distancia entre dos ubicaciones

- (void)locationManager:(CLLocationManager *)manager didFailWithError: ( NSError *)error{

NSLog(@"%@",error );

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Maneja cualquier recurso recreable.

}

@end