关于MKMapView -地图展示

MKMapView提供了一套可植入的地图接口,可以让我们在应用中展示地图,并对其进行相关的操作。一般来说,我们可以指定一个展示区域,放一些标记在上面,还可以加盖一些层在上面。

MKMapView依赖Google map里面相关服务(如Google Earth API等),所以地图的左下角会有Google字样。

使用:

1.MKMapView的显示


(1)创建MKMapView


[plain]  view plain copy
  1.    CGRect rect = CGRectMake(0, 0, 320, 460);  
  2.    MKMapView *mapView = [[MKMapView alloc] initWithFrame:rect];  
  3.    //定义经纬度  
  4.     CLLocationCoordinate2D theCoordinate;  
  5.       
  6.     theCoordinate.latitude=22.5414; //纬度  
  7.       
  8.     theCoordinate.longitude=113.946; //经度  
  9.       
  10.     //定义显示范围  
  11.     MKCoordinateSpan theSpan;  
  12.       
  13.     theSpan.latitudeDelta=0.01;  
  14.       
  15.     theSpan.longitudeDelta=0.01;  
  16.       
  17.     //定义一个区域(使用设置的经度纬度加上一个范围)  
  18.     MKCoordinateRegion theRegion;  
  19.       
  20.     theRegion.center=theCoordinate;  
  21.       
  22.     theRegion.span=theSpan;  
  23.     //设置地图显示类型:  
  24.     [mapViewsetMapType:MKMapTypeStandard];
  25.     //将mapview的显示区域设置为theRegion
  26.     [mapView setRegion:theRegion];  
  27.   
  28.     对于mapType,在MKTypes里有这样一段字典定义:  
  29. enum {  
  30.    MKMapTypeStandard,  
  31.    MKMapTypeSatellite,  
  32.    MKMapTypeHybrid  
  33. };  
  34. typedef NSUInteger MKMapType;
  35. standard:标注地图,显示街道和街道名  
  36. Satellite:卫星图片区  
  37. Hybrid:卫星图,同时在相应区域有标注了街道和街道名  
  38.   
  39. 2.在MKMapView上添加标注  
  40.   
  41. (1)和标注相关的类及协议  

  42.   *MKAnnotation Protocol  

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

  44.   *MKAnnotationView  

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

  46.      -(id)initWithAnnotation:(id<MKAnnotation>)annotationreuseIdentifier:(NSString *)reuseIdentifier  

  47.      其比较重要的属性有  

  48.      @property(nonatomic, retain) UIImage *image  

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

  50.      @property(nonatomic) BOOL canShowCallout 

  51.      设置点击后能否弹出标注

  52.      @property (retain,nonatomic) UIView *rightCalloutAccessoryView 

  53.      @property (retain,nonatomic) UIView *leftCalloutAccessoryView 

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

  55.  *MKPinAnnotationView

  56.      这是提供的大头针方式显示标注,继承自MKAnnotationView,添加了两个属性

  57.      @property(nonatomic) MKPinAnnotationColor pinColor

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

  59.      @property(nonatomic) BOOL animatesDrop

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


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

  62.      1》创建一个实现MKAnnotation协议的类,在该类的初始化函数中给其coordinate属性设置

  63.      2》用上述方法创建Annotation

  64.      3》把创建的Annotation用addAnnotation的方法添加到MapView中

  65.      4》实现MKMapViewDelegate代理,在代理函数
  66.           - (MKAnnotationView*)mapView:(MKMapView *)mView viewForAnnotation:(id<MKAnnotation>)annotation中把Annotation变成MKAnnotationView返回,然后会在在地图上上显示。

  67. 3.在MKMapView上添加overLays
  68.     overLay是mapView的另一大功能,如annotation类似,MKMapView也维护着一个overLays的队列,overLay就是在地图上式覆盖某种形式的视图,如公交线路图,包括线路上各停靠站等,overLay必须实现协议MKOverlay,同时必须指定其形状,大小,以及在地图上的定位,与Annotation一样,它也不能独立展现在地图上,它的展示由MKOverlayView来管理(如同annotation的展示由MKAnnotationView来管理),然后使用add/insertOverlay相关的函数添加到mapView里面就可以了。
  69. (代码稍后补上)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值