IOS自带地图MKMapView

首先需要导入MapKit.framework。

如果需要加标注并且显示不同的图片。就需要自己定义类实现MKAnnotation协议。

在下面方法里面判断是那种类型然后显示不同的图片

- (MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id)annotation{

if([annotationisKindOfClass:[YujuShangdianAnnotationclass]]) {

MKAnnotationView*annotationView =[self.mapViewdequeueReusableAnnotationViewWithIdentifier:@"CustomAnnotation"];

if(!annotationView) {

annotationView = [[MKAnnotationViewalloc]initWithAnnotation:annotation

reuseIdentifier:@"CustomAnnotation"] ;

annotationView.canShowCallout=NO;

annotationView.image= [UIImageimageNamed:@"mapyujushangdian"];

}

returnannotationView;

}elseif([annotationisKindOfClass:[YuchuanMaTouAnnotationclass]]) {

MKAnnotationView*annotationView =[self.mapViewdequeueReusableAnnotationViewWithIdentifier:@"CustomAnnotation"];

if(!annotationView) {

annotationView = [[MKAnnotationViewalloc]initWithAnnotation:annotation

reuseIdentifier:@"CustomAnnotation"] ;

annotationView.canShowCallout=NO;

annotationView.image= [UIImageimageNamed:@"mapyuchuanmatou"];

}

returnannotationView;

}elseif([annotationisKindOfClass:[YushichangAnnotationclass]]) {

MKAnnotationView*annotationView =[self.mapViewdequeueReusableAnnotationViewWithIdentifier:@"CustomAnnotation"];

if(!annotationView) {

annotationView = [[MKAnnotationViewalloc]initWithAnnotation:annotation

reuseIdentifier:@"CustomAnnotation"] ;

annotationView.canShowCallout=NO;

annotationView.image= [UIImageimageNamed:@"mapfangzi"];

}

returnannotationView;

}

returnnil;

}


判断一个Annotation是否在当前地图中可见

MKMapRectvisibleMapRect=self.mapView.visibleMapRect;

NSSet*visibleAnnotation=[self.mapViewannotationsInMapRect:visibleMapRect];

if([visibleAnnotationcontainsObject:anno]) {

}

将地图缩放到某个合适的位置 使一些Annotation同时可见

MKPointAnnotation*pointann=[[MKPointAnnotationalloc]init];

CLLocationCoordinate2Dcoorstart;

coorstart.latitude=40;

coorstart.longitude=115;

pointann.coordinate=coorstart;

[_mapViewaddAnnotation:pointann];

MKPointAnnotation*pointann2=[[MKPointAnnotationalloc]init];

CLLocationCoordinate2Dcoorstart2;

coorstart2.latitude=40;

coorstart2.longitude=116;

pointann2.coordinate=coorstart2;

[_mapViewaddAnnotation:pointann2];

[self.mapViewshowAnnotations:@[pointann,pointann2]animated:YES];

控制MapView动画的时间

[MKMapViewanimateWithDuration:0.8delay:0.0options:UIViewAnimationOptionCurveEaseInOutanimations:^{

[self.mapViewsetCenterCoordinate:anno.coordinateanimated:YES];

} completion:^(BOOLfinished) {

}];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容