I just saw that MKReverseGeocoder is deprecated. Question is, how do you change to CLGeocoder the easiest way? Sorry for the extremely long source code (i think you think it's pretty simple, but im new to this). This is what I got before...
StoreLocation.h
@interface StoreLocation : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;
@property (nonatomic, readwrite) NSString *subtitle;
-(id)initWithCoordinate:(CLLocationCoordinate2D) coordinate;
- (NSString *)subtitle;
- (NSString *)title;
@end
StoreLocation.m
@implementation StoreLocation
@synthesize coordinate,subtitle;
-(NSString *)subtitle{
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
if ([userDef boolForKey:@"SavedAddress"]) {
NSString *savedAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"SavedAddress"];
return savedAddress;
}
else {
return subtitle;
}
}
-(id)initWithCoordinate:(CLLocationCoordinate2D) coor{
self.coordinate=coor;
return self;
}
- (void)setCoordinate:(CLLocationCoordinate2D)coor {
MKReverseGeocoder *geocoder = [[MKReverseGeocoder alloc] initWithCoordinate:coor];
geocoder.delegate = self;
coordinate = coor;
[geocoder start];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error {
NSLog(@"fail %@", error);
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark {
self.subtitle = [placemark.addressDictionary valueForKey:@"Street"];
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
[userDef setValue:subtitle forKey:@"SavedAddress"];
}
MapViewController.m
-(void) locationManager: (CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation*)oldLocation{
MKGeocoder *geocoder = [[MKReverseGeocoder alloc] initWithCoordinate:location];
[geocoder start];
}
- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark{
NSString *streetAddress = [NSString stringWithFormat:@"%@, %@",
[placemark.addressDictionary objectForKey:(NSString *)kABPersonAddressStreetKey],
[placemark.addressDictionary objectForKey:(NSString *)kABPersonAddressCityKey]];
mapView.userLocation.subtitle = streetAddress;
}
-(IBAction)storeLocation {
StoreLocation *position=[[StoreLocation alloc] initWithCoordinate:location]; [mapView addAnnotation:position]; }
- (MKAnnotationView *)mapView:(MKMapView *)mapview
viewForAnnotation:(id <MKAnnotation>)dropPin
{
if ([dropPin isKindOfClass:MKUserLocation.class])
{
return nil;
}
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapview dequeueReusableAnnotationViewWithIdentifier:@"annot"];
if (!pinView)
{
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:dropPin reuseIdentifier:@"annot"];
pinView.canShowCallout = YES;
}
else {
pinView.annotation = dropPin;
}
return pinView;
}
Thanks a thousand times!