CAL002-MapKit实战

     参考博客:http://www.raywenderlich.com/21365/introduction-to-mapkit-in-ios-6-tutorial

     MapKit是苹果提供的地图框架集合,开发者可以很方便的使用该框架完成地理位置相关的开发工作,网上的资料很多、教程也很多,这里就不啰嗦了,但百看不如一践,实现一个基本的MapKit 应用程序能迅速的找到使用该框架的感觉。下面简要列举实现:


     1.打开Xcode创建一个single view application;
     2.修改工程设置文件,添加MapKit.framework框架;
     3.在Main.storyboard中绘制UI,添加mapview,并和程序关联起来。
     添加mapkit相关的代码,详见我的github仓库:https://github.com/lihux/LihuxMapKitLearning 

     代码主要实现了一下逻辑:

1.定位功能,程序一开启就自动定位到当前的位置;

2.搜索功能,输入具体的地址信息如“青岛”,点击搜索,地图将展示搜索到的位置,如搜索失败则弹窗提示;

定位相关代码:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

{

    if (!self.inSearchModel) {

        self.mapView.centerCoordinate = userLocation.location.coordinate;

    }

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {

        if (placemarks.count > 0) {

            CLPlacemark *placemark = placemarks[0];

            NSString *city = ABCreateStringWithAddressDictionary(placemark.addressDictionary, YES);

            NSLog(@"%@", city);

//            self.searchTextField.text = city;

        }

    }];

}

搜索相关代码:

- (void)searchPlaceOnMap:(NSString *)cityName

{

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder geocodeAddressString:cityName completionHandler:^(NSArray *placemarks, NSError *error) {

        if (placemarks.count > 0) {

            CLPlacemark *placemark = placemarks[0];

            self.mapView.centerCoordinate = placemark.location.coordinate;

        } else {

            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"查询失败" message:@"无法查询到您所给定的位置信息" delegate:self cancelButtonTitle:@"qued" otherButtonTitles:nil, nil];

            [alertView show];

        }

    }];

}

运行截图:


1.启动后,程序自动定位到我所在的位置



点击搜索框,弹出键盘输入要搜索底地名,点击搜索



搜索成功,地图定位到青岛市地图


CAL002-MapKit实战_第1张图片

我在Xcode的storyboard使用了自动布局(autolayout)这是横屏时的效果图


你可能感兴趣的:(ios,地图,MapKit)