2012-01-27 14 views
5

Tengo una pregunta relacionada con la geocodificación inversa.objetivo c cómo obtener marcas de posición de coordenadas dadas

En mi aplicación, tengo algunas coordenadas (no son mis coordenadas actuales) y quiero convertirlas en marcas de posición. He cavado muchos sitios web y códigos, pero se trata de geocodificación inversa de la ubicación actual ...

¿Hay alguna forma de obtener marcas de posición de las coordenadas especificadas (que no son la ubicación actual)?

Y si es así, ayúdenme con algún código o referencias.

+0

¿Qué quiere decir? Tendrá que hacer lo mismo ya sea que la ubicación sea suya o no. Aquí hay alguna referencia si está desarrollando para iOS 5: http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLGeocoder_class – vakio

+0

No puede asignar la ubicación a CLLocation.coordinat.longitude o latitude. y el método reverseGeoCoding solo acepta CLLocation no CLLocationCoordinate2D – Garnik

+2

'CLLocation * loc = [[CLLocation alloc] initWithLatitude: latitude longitude: longitude];' – vakio

Respuesta

2

Esto se puede conseguir de dos maneras: -

Primera forma: - obtener la información utilizando la API de Google

-(void)findAddresstoCorrespondinglocation 
{ 
    NSString *str = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=false",myCoordInfo.latitude,myCoordInfo.longitude]; 
    NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease]; 
    [request setRequestMethod:@"GET"]; 
    [request setDelegate:self]; 
    [request setDidFinishSelector: @selector(mapAddressResponse:)]; 
    [request setDidFailSelector: @selector(mapAddressResponseFailed:)]; 
    [networkQueue addOperation: request]; 
    [networkQueue go]; 

} 

en respuesta obtendrá toda la información sobre las coordenadas de ubicación que ha especificado.

segundo enfoque: -

Implementar geocodificación inversa

a) añadir mapkit marco

b) Hacer una instancia de MKReverseGeocoder en el archivo .h

MKReverseGeocoder *reverseGeocoder; 

c)... en el archivo .m

self.reverseGeocoder = [[MKReverseGeocoder alloc] initWithCoordinate:cordInfo]; 
    reverseGeocoder.delegate = self; 
    [reverseGeocoder start]; 

implementar dos métodos de delegado de MKReverseGeoCoder

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error 
{ 
    NSLog(@"MKReverseGeocoder has failed."); 
} 

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark 
{ 
    MKPlacemark * myPlacemark = placemark; 
    NSString *city = myPlacemark.thoroughfare; 
    NSString *subThrough=myPlacemark.subThoroughfare; 
    NSString *locality=myPlacemark.locality; 
    NSString *subLocality=myPlacemark.subLocality; 
    NSString *adminisArea=myPlacemark.administrativeArea; 
    NSString *subAdminArea=myPlacemark.subAdministrativeArea; 
    NSString *postalCode=myPlacemark.postalCode; 
    NSString *country=myPlacemark.country; 
    NSString *countryCode=myPlacemark.countryCode; 
    NSLog(@"city%@",city); 
    NSLog(@"subThrough%@",subThrough); 
    NSLog(@"locality%@",locality); 
    NSLog(@"subLocality%@",subLocality); 
    NSLog(@"adminisArea%@",adminisArea); 
    NSLog(@"subAdminArea%@",subAdminArea); 
    NSLog(@"postalCode%@",postalCode); 
    NSLog(@"country%@",country); 
    NSLog(@"countryCode%@",countryCode); 

    } 
+0

solo para tener en cuenta: en iOS 5.0, está en desuso a favor de la clase 'GLGeocoder': http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLGeocoder_class/Reference/Reference.html#//apple_ref/occ/cl/CLGeocoder – Krizz

+0

Sugeriría usar método google api. Es fácil y más confiable. – Gypsa

+0

Gracias Gypsa intentaré el primer acercamiento pero como sé que MKReverseGeoCoder está privado en iOS 5. Gracias de antemano – Garnik

Cuestiones relacionadas