iOS 地图 api MKMapView

1.MKMapView的显示 

(1)创建MKMapView 

CGRect rect = CGRectMake(0, 20, 320, 460); 

MKMapView *mapView = [[MKMapView alloc] initWithFrame:rect]; 

(2)设定经纬度 

CLLocationCoordinate2D theCoordinate; 

theCoordinate.latitude=24.138727; 

theCoordinate.longitude=120.713827; 

(3)设定显示范围 

MKCoordinateSpan theSpan; 

theSpan.latitudeDelta=0.1; 

theSpan.longitudeDelta=0.1; 

(4)设置地图显示的中心及范围 

MKCoordinateRegion theRegion; 

theRegion.center=theCoordinate; 

theRegion.span=theSpan; 

(5)设置地图显示的类型及根据范围进行显示 

[mapView setMapType:MKMapTypeStandard]; 

[mapView setRegion:theRegion]; 

完成这些步骤,再把mapView添加到当前view中就可以显示了。 

2.在MKMapView上添加标注 

(1)和标注相关的类及协议 

(a)MKAnnotation Protocol 

标注必须实现这个协议,有三个属性,coordinate,title和subtitle,其中coordinate属性必须设置。 

@property (nonatomic, readonly) CLLocationCoordinate2D coordinate 

(b)MKAnnotationView 

设置好Annotation后就可以用这个把标注在地图上显示出来, 

- (id)initWithAnnotation:(id <MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier 

其比较重要的属性有 

@property (nonatomic, retain) UIImage *image 

自定义在地图上标注的图片 

@property (nonatomic) BOOL canShowCallout 

设置点击后能否弹出标注 

@property (retain, nonatomic) UIView *rightCalloutAccessoryView 

property (retain, nonatomic) UIView *leftCalloutAccessoryView 

设置在标注的左右边点击后进一步弹出附属的View 

(c)MKPinAnnotationView 

这是以大头针的方式显示标注,继承自MKAnnotationView,同时添加了两个属性 

@property (nonatomic) MKPinAnnotationColor pinColor 

设置大头针的颜色,有红绿紫三种颜色可选择 

@property (nonatomic) BOOL animatesDrop 

设置大头针是否以掉下来的动画方式显示 

(2)在地图上添加Annotation的步骤 

(a)创建一个实现MKAnnotation协议的类,在该类的初始化函数中给其coordinate属性设置 

(b)用上述方法创建Annotation 

(c)把创建的Annotation用addAnnotation的方法添加到MapView中 

(d)实现MKMapViewDelegate代理,在代理函数 

- (MKAnnotationView *)mapView:(MKMapView *)mView viewForAnnotation:(id <MKAnnotation>)annotation中把Annotation以MKPinAnnotationView或MKAnnotationView的方式标注在地图上上显示。 


说明:

用UIGestureRecognizer获取到触摸地图的点坐标

再用下面的方法将点坐标转化为经纬度方法(很好很强大!!!)

- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

再在此经纬度处加大头针。既就完成了长按地图某一点,加大头针标记,点击大头针,弹出泡泡,点击泡泡按钮导航到指定页面的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值