我想在我的iPhone应用程序中使用地图视图阅读我当前的位置。
我当前的位置可能会根据时间而改变。
现在我将成为一个地方,一小时后我会走几公里。但我的目标是,每当我在那里,当前的位置,我都会想要阅读。
如果有任何方法可以这样阅读。
答案 0 :(得分:2)
看一下Core位置管理器。 http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/
这是相当直接的:
地图视图是一个演示组件 - 如果您想要控制位置感知,请使用位置管理器。
答案 1 :(得分:2)
如果你有一个名为mapView的MKMapView对象,你可以这样做:
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更新其位置时都会调用该方法,可能至少每隔几秒就会调用一次。
答案 2 :(得分:2)
我认为http://www.roseindia.net/tutorial/iphone/examples/iPhoneMapViewCurrentLocation.html会对您有所帮助。它对我有用。
答案 3 :(得分: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;
myAnnotation1.title=@"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];
}