Đây là đâu
Xác định thông tin vị trí từ một chấm điểm tại vị trí bất kỳ trên bản đồ.
Tải về thư viện Vietbando Services.
#import "ViewController.h"
#define KEY_SEARCH @"Hotel"
@import Vietbando;
@import VietbandoServices;
@interface ViewController ()
@property (nonatomic) IBOutlet VBDMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewWillAppear:(BOOL)animated{
if ([VBDAccountManager accessToken].length == 0)
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Register Key" message:@"Enter your Vietbando Register Key:" preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField)
{
textField.keyboardType = UIKeyboardTypeURL;
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
}];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]];
UIAlertAction OKAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction _Nonnull action)
{
UITextField *textField = alertController.textFields.firstObject;
NSString *accessToken = textField.text;
[VBDAccountManager setAccessToken:accessToken];
[self.mapView reloadStyle:self];
[self Search:KEY_SEARCH];
}];
[alertController addAction:OKAction];
[self presentViewController:alertController animated:class="nb" completion:nil];
}
else{
[self Search:KEY_SEARCH];
}
}
- (void) Search:(NSString *)key{
CLLocationCoordinate2D lefttop = [self.mapView convertPoint:CGPointMake(0, 0) toCoordinateFromView:self.mapView];
CLLocationCoordinate2D rightbottom = [self.mapView convertPoint:CGPointMake(self.mapView.bounds.size.width, self.mapView.bounds.size.height) toCoordinateFromView:self.mapView];
NSString *sRegisterKey = [VBDAccountManager accessToken];
[VBDServices Search:key page:[NSNumber numberWithInt:1] pagesize:[NSNumber numberWithInt:10] lefttop:lefttop rightbottom:rightbottom registerKey:sRegisterKey success:^(id obj) {
NSArray list = (NSArray )obj;
if( list && [list isKindOfClass:[NSArray class]] && [list count]>0 ){
NSMutableArray *annos = [[NSMutableArray alloc] init];
for( NSDictionary *dic in list )
{
VBDPointAnnotation *anno = [[VBDPointAnnotation alloc] init];
double lat = [[dic objectForKey:@"Latitude"] doubleValue];
double lon = [[dic objectForKey:@"Longitude"] doubleValue];
anno.coordinate = CLLocationCoordinate2DMake(lat,lon);
anno.title = [dic objectForKey:@"Name"];
[annos addObject:anno];
}
[self.mapView addAnnotations:annos];
[self.mapView showAnnotations:annos animated:class="nb"];
}
else{
[self showError:@"Không tìm thấy!"];
}
}
fail:^(id obj) {
[self showError:(NSString *)obj];
}
];
}
- (void) showError:(NSString *)errorText{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Error" message:errorText preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:ok];
[self presentViewController:alertController animated:class="nb" completion:nil];
}
#pragma mark VBDMapView
// Use the default marker; see our custom marker example for more information
- (VBDAnnotationImage )mapView:(VBDMapView )mapView imageForAnnotation:(id <VBDAnnotation>)annotation {
return nil;
}
// Allow markers callouts to show when tapped
- (BOOL)mapView:(VBDMapView *)mapView annotationCanShowCallout:(id <VBDAnnotation>)annotation {
return YES;
}
@end