update ios code

This commit is contained in:
Kyle Fang
2019-02-14 14:18:36 +08:00
parent 62e99a79e2
commit 7390c0e7a3

View File

@@ -1,11 +1,15 @@
#import "RNGooglePlacePicker.h"
#import "RCTEventDispatcher.h"
#import <GooglePlaces/GooglePlaces.h>
#import <GooglePlacePicker/GooglePlacePicker.h>
#import <React/RCTConvert.h>
@interface RNGooglePlacePicker() <GMSPlacePickerViewControllerDelegate>
@end
@implementation RNGooglePlacePicker {
GMSPlacePicker *_placePicker;
GMSPlacePickerViewController *_placePicker;
RCTResponseSenderBlock _callback;
}
RCT_EXPORT_MODULE()
@@ -14,39 +18,48 @@ RCT_EXPORT_MODULE()
return dispatch_get_main_queue();
}
- (void)placePicker:(GMSPlacePickerViewController *)viewController didPickPlace:(GMSPlace *)place {
NSMutableDictionary *response = [[NSMutableDictionary alloc] init];
if (place.formattedAddress) {
[response setObject:place.formattedAddress forKey:@"address"];
} else {
[response setObject:[NSNull null] forKey:@"address"];
}
if (place.name) {
[response setObject:place.name forKey:@"name"];
} else {
[response setObject:[NSNull null] forKey:@"name"];
}
if (place.placeID) {
[response setObject:place.placeID forKey:@"google_id"];
} else {
[response setObject:[NSNull null] forKey:@"google_id"];
}
[response setObject:@(place.coordinate.latitude) forKey:@"latitude"];
[response setObject:@(place.coordinate.longitude) forKey:@"longitude"];
_callback(@[response]);
[_placePicker dismissViewControllerAnimated:true completion:nil];
}
- (void)placePickerDidCancel:(GMSPlacePickerViewController *)viewController {
_callback(@[@{@"didCancel" : @YES}]);
[_placePicker dismissViewControllerAnimated:true completion:nil];
}
- (void)placePicker:(GMSPlacePickerViewController *)viewController didFailWithError:(NSError *)error {
_callback(@[@{@"error" : error.localizedFailureReason}]);
[_placePicker dismissViewControllerAnimated:true completion:nil];
}
RCT_EXPORT_METHOD(show:
(RCTResponseSenderBlock) callback) {
_callback = callback;
GMSPlacePickerConfig *config = [[GMSPlacePickerConfig alloc] initWithViewport:nil];
_placePicker = [[GMSPlacePicker alloc] initWithConfig:config];
[_placePicker pickPlaceWithCallback:^(GMSPlace *place, NSError *error) {
if (place) {
NSMutableDictionary *response = [[NSMutableDictionary alloc] init];
if (place.formattedAddress) {
[response setObject:place.formattedAddress forKey:@"address"];
} else {
[response setObject:[NSNull null] forKey:@"address"];
}
if (place.name) {
[response setObject:place.name forKey:@"name"];
} else {
[response setObject:[NSNull null] forKey:@"name"];
}
if (place.placeID) {
[response setObject:place.placeID forKey:@"google_id"];
} else {
[response setObject:[NSNull null] forKey:@"google_id"];
}
[response setObject:@(place.coordinate.latitude) forKey:@"latitude"];
[response setObject:@(place.coordinate.longitude) forKey:@"longitude"];
callback(@[response]);
} else if (error) {
callback(@[@{@"error" : error.localizedFailureReason}]);
} else {
callback(@[@{@"didCancel" : @YES}]);
}
}];
_placePicker = [[GMSPlacePickerViewController alloc] initWithConfig:config];
_placePicker.delegate = self;
UIViewController *root = RCTPresentedViewController();
[root presentViewController:_placePicker animated:true completion:nil];
}