You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.5 KiB
77 lines
2.5 KiB
#if !defined(__has_feature) || !__has_feature(objc_arc) |
|
#error "This file requires ARC support." |
|
#endif |
|
|
|
#import "GoogleMapsDemos/Samples/StructuredGeocoderViewController.h" |
|
|
|
#import <GoogleMaps/GoogleMaps.h> |
|
|
|
@interface StructuredGeocoderViewController () <GMSMapViewDelegate> |
|
|
|
@end |
|
|
|
@implementation StructuredGeocoderViewController { |
|
GMSMapView *_mapView; |
|
GMSGeocoder *_geocoder; |
|
} |
|
|
|
- (void)viewDidLoad { |
|
[super viewDidLoad]; |
|
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868 |
|
longitude:151.2086 |
|
zoom:12]; |
|
|
|
_mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; |
|
_mapView.delegate = self; |
|
|
|
_geocoder = [[GMSGeocoder alloc] init]; |
|
|
|
self.view = _mapView; |
|
} |
|
|
|
#pragma mark - GMSMapViewDelegate |
|
|
|
- (void)mapView:(GMSMapView *)mapView |
|
didLongPressAtCoordinate:(CLLocationCoordinate2D)coordinate { |
|
// On a long press, reverse geocode this location. |
|
GMSReverseGeocodeCallback handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { |
|
GMSAddress *address = response.firstResult; |
|
if (address) { |
|
NSLog(@"Geocoder result: %@", address); |
|
|
|
GMSMarker *marker = [GMSMarker markerWithPosition:address.coordinate]; |
|
|
|
marker.title = address.thoroughfare; |
|
|
|
NSMutableString *snippet = [[NSMutableString alloc] init]; |
|
if (address.subLocality != NULL) { |
|
[snippet appendString:[NSString stringWithFormat:@"subLocality: %@\n", |
|
address.subLocality]]; |
|
} |
|
if (address.locality != NULL) { |
|
[snippet appendString:[NSString stringWithFormat:@"locality: %@\n", |
|
address.locality]]; |
|
} |
|
if (address.administrativeArea != NULL) { |
|
[snippet appendString:[NSString stringWithFormat:@"administrativeArea: %@\n", |
|
address.administrativeArea]]; |
|
} |
|
if (address.country != NULL) { |
|
[snippet appendString:[NSString stringWithFormat:@"country: %@\n", |
|
address.country]]; |
|
} |
|
|
|
marker.snippet = snippet; |
|
|
|
marker.appearAnimation = kGMSMarkerAnimationPop; |
|
marker.map = _mapView; |
|
mapView.selectedMarker = marker; |
|
} else { |
|
NSLog(@"Could not reverse geocode point (%f,%f): %@", |
|
coordinate.latitude, coordinate.longitude, error); |
|
} |
|
}; |
|
[_geocoder reverseGeocodeCoordinate:coordinate completionHandler:handler]; |
|
} |
|
|
|
@end
|
|
|