iOS开发之离线地图核心代码
程序员文章站
2023-12-11 22:22:40
一,效果图。
二,工程图。
三,代码。
viewcontroller.h
#import
一,效果图。
二,工程图。
三,代码。
viewcontroller.h
#import <uikit/uikit.h> #import <corelocation/corelocation.h> #import "maplocation.h" @interface viewcontroller : uiviewcontroller <mkmapviewdelegate> { mkmapview *_mapview; nsstring *addressstring; } @end
viewcontroller.m
#import "viewcontroller.h" @interface viewcontroller () @end @implementation viewcontroller - (void)viewdidload { [super viewdidload]; // do any additional setup after loading the view. //调用系统自带的高德地图 //显示当前某地的离线地图 _mapview = [[mkmapview alloc] init]; _mapview.frame = cgrectmake(0, 40, 320,400); _mapview.delegate = self; _mapview.maptype = mkmaptypestandard; [self.view addsubview:_mapview]; addressstring=@"光启城"; nslog(@"---addressstring---%@",addressstring); [self geocodequery]; } - (void)geocodequery{ if (addressstring == nil || [addressstring length] == 0) { return; } clgeocoder *geocoder = [[clgeocoder alloc] init]; [geocoder geocodeaddressstring:addressstring completionhandler:^(nsarray *placemarks, nserror *error) { nslog(@"查询记录数:%ld",[placemarks count]); if ([placemarks count] > 0) { [_mapview removeannotations:_mapview.annotations]; } for (int i = 0; i < [placemarks count]; i++) { clplacemark* placemark = placemarks[i]; //调整地图位置和缩放比例 mkcoordinateregion viewregion = mkcoordinateregionmakewithdistance(placemark.location.coordinate, 10000, 10000); [_mapview setregion:viewregion animated:yes]; maplocation *annotation = [[maplocation alloc] init]; annotation.streetaddress = placemark.thoroughfare; annotation.city = placemark.locality; annotation.state = placemark.administrativearea; annotation.zip = placemark.postalcode; annotation.coordinate = placemark.location.coordinate; [_mapview addannotation:annotation]; } }]; } #pragma mark map view delegate methods - (mkannotationview *) mapview:(mkmapview *)themapview viewforannotation:(id <mkannotation>) annotation { mkpinannotationview *annotationview = (mkpinannotationview *)[_mapview dequeuereusableannotationviewwithidentifier:@"pin_annotation"]; if(annotationview == nil) { annotationview = [[mkpinannotationview alloc] initwithannotation:annotation reuseidentifier:@"pin_annotation"]; } annotationview.pincolor = mkpinannotationcolorpurple; annotationview.animatesdrop = yes; annotationview.canshowcallout = yes; return annotationview; } - (void)mapview:(mkmapview *)mapview didupdateuserlocation:(mkuserlocation *)userlocation { _mapview.centercoordinate = userlocation.location.coordinate; } - (void)mapviewdidfailloadingmap:(mkmapview *)themapview witherror:(nserror *)error { nslog(@"error : %@",[error description]); } @end
maplocation.h
#import <mapkit/mapkit.h> @interface maplocation : nsobject<mkannotation> //街道信息属性 @property (nonatomic, copy) nsstring *streetaddress; //城市信息属性 @property (nonatomic, copy) nsstring *city; //州、省、市信息 @property (nonatomic, copy) nsstring *state; //邮编 @property (nonatomic, copy) nsstring *zip; //地理坐标 @property (nonatomic, readwrite) cllocationcoordinate2d coordinate; @end
maplocation.m
//地图调用函数 #import "maplocation.h" @implementation maplocation - (nsstring *)title { return @"您的位置!"; } - (nsstring *)subtitle { nsmutablestring *ret = [nsmutablestring new]; if (_state) [ret appendstring:_state]; if (_city) [ret appendstring:_city]; if (_city && _state) [ret appendstring:@", "]; if (_streetaddress && (_city || _state || _zip)) [ret appendstring:@" • "]; if (_streetaddress) [ret appendstring:_streetaddress]; if (_zip) [ret appendformat:@", %@", _zip]; return ret; } @end
推荐阅读
-
iOS开发之离线地图核心代码
-
iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码
-
IOS程序开发之禁止输入表情符号实例代码
-
IOS开发之由身份证号码提取性别的实现代码
-
iOS开发之离线地图核心代码
-
iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码
-
IOS程序开发之禁止输入表情符号实例代码
-
iOS开发之UIScrollView控件代码实现图片缩放功能
-
IOS开发教程第一季之UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
-
iOS开发之1行代码实现缓存计算及清除缓存