2010-09-29 3 views
0

Я хочу прочитать текущее местоположение, используя Map view в своем приложении iPhone.Прочтите текущее местоположение, используя Map View в приложениях iPhone

Мое текущее местоположение может быть изменено в зависимости от времени.

Теперь я буду одним местом, через час я пройду несколько километров. Но моя цель - когда я буду там, это текущее местоположение, я буду хочу читать.

Если есть какой-либо способ, чтобы это можно было прочитать.

ответ

2

Если у вас есть объект MKMapView под названием MAPview, вы могли бы сделать:

mapView.showsUserLocation = YES; 

Это включит MKMapView встроенные в месте службы. Вам не нужно иметь дело с CLLocation Manager обязательно, потому что MKMapView будет обрабатывать работу по поиску устройства для вас.

Теперь получение обновлений, которые производит MKMapView, является более сложным, если вы никогда раньше не работали с делегатами.

В вашем .h, вы хотите принять протокол <MKMapViewDelegate>.

Затем, прямо рядом с выше линии, скажем:

mapView.delegate = self; 

Затем реализовать следующий метод:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    // inside here, userLocation is the MKUserLocation object representing your 
    // current position. 

    CLLocation *whereIAm = userLocation.location; 
    NSLog(@"I'm at %@", whereIAm.description); 

    float latitude = whereAmI.coordinate.latitude; 
    float longitude = whereAmI.coordinate.longitude; 

    // etc. 

} 

Этот метод будет вызываться каждый раз, когда MKMapView обновляет свое местоположение, вероятно, каждые несколько секунд.

+0

Спасибо за ваш ответ. Это очень полезно для меня. он работает хорошо. – Velmurugan

2

Посмотрите на менеджера местоположения Core. http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/

Это довольно прямо вперед:

  • Создать менеджер местоположения и зарегистрировать делегата.
  • Запустить диспетчер местоположения.
  • Когда менеджер местоположения обнаруживает изменение в месте, он будет извещать ваш делегат через locationManager: didUpdateToLocation: fromLocation:

Карта View является презентационным компонентом - если вы хотите, чтобы получить контроль над использованием местоположения осведомленности менеджер местоположения.

2
mapView.delegate=self; 
enter code here 

MKCoordinateRegion region; 
MKCoordinateSpan span; 
span.latitudeDelta = 0.2; 
span.longitudeDelta = 0.2; 
region.span = span; 
[mapView setRegion:region animated:YES]; 

NSMutableArray* annotations=[[NSMutableArray alloc] init]; 
CLLocationCoordinate2D theCoordinate1; 


CLLocationManager *manager = [[CLLocationManager alloc] init]; 
double lat=manager.location.coordinate.latitude; 
double lon=manager.location.coordinate.longitude; 


NSString *lat_str1=[NSString stringWithFormat:@"%f",lat]; 
NSString * long_str1=[NSString stringWithFormat:@"%f",lon]; 

theCoordinate1.latitude = [lat_str1 floatValue]; 
theCoordinate1.longitude = [long_str1 floatValue]; 


MyAnnotation *myAnnotation1=[[MyAnnotation alloc] init]; 
myAnnotation1.coordinate=theCoordinate1; 
[email protected]"Current Address"; 
myAnnotation1.subtitle=[arr objectAtIndex:0]; 
[annotations addObject:myAnnotation1]; 
[myAnnotation1 release]; 

for(int i=0; i<[annotations count];i++) 
{ 
    [mapView addAnnotation:[annotations objectAtIndex:i]]; 
} 

MKMapRect flyTo = MKMapRectNull; 
for (id <MKAnnotation> annotation in annotations) { 


    MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
    MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0, 0); 
    if (MKMapRectIsNull(flyTo)) { 
     flyTo = pointRect; 
    } else { 
     flyTo = MKMapRectUnion(flyTo, pointRect); 
    } 
} 

    mapView.visibleMapRect = flyTo; 

} 

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 


    CLLocationManager *manager = [[CLLocationManager alloc] init]; 
    double lat=manager.location.coordinate.latitude; 
    double lon=manager.location.coordinate.longitude; 

    SBJSON *parser = [[SBJSON alloc] init]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps/geo?output=json&oe=utf-8&ll=%@,%@&key=API_KEY",lat_str1,long_str1]]]; 
     NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
    NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 
    NSDictionary *statuses = [parser objectWithString:json_string error:nil]; 


    NSArray *resultsnew1=[statuses objectForKey:@"Placemark"]; 



arr=[[NSMutableArray alloc]init]; 


for(NSDictionary *sub333 in resultsnew1) 
{ 

    [arr addObject:[sub333 objectForKey:@"address"]]; 

    NSString*add_str=[NSString stringWithFormat:@"%@",arr]; 
    atm_address.text=add_str; 

} 



address.text=[arr objectAtIndex:0]; 

} 
Смежные вопросы