MapKit是苹果提供的地图框架集合,开发者可以很方便的使用该框架完成地理位置相关的开发工作,网上的资料很多、教程也很多,这里就不啰嗦了,但百看不如一践,实现一个基本的MapKit 应用程序能迅速的找到使用该框架的感觉。下面简要列举实现:
代码主要实现了一下逻辑:
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.启动后,程序自动定位到我所在的位置
点击搜索框,弹出键盘输入要搜索底地名,点击搜索
搜索成功,地图定位到青岛市地图
我在Xcode的storyboard使用了自动布局(autolayout)这是横屏时的效果图