在地图上用大头钉标记位置

在地图上用大头钉标记位置

#import”ViewController.h”

#import <MapKit/MapKit.h>

@interfaceViewController()

{

MKMapView*_map;

}

@end

@implementationViewController

– (void)viewDidLoad

{

[superviewDidLoad];

_map=[[MKMapViewalloc]initWithFrame:CGRectMake(0,20,320,548)];

//设置map类型

_map.mapType=MKMapTypeStandard;

//设置区域

//中心点

/*

typedef struct

{

CLLocationDegrees latitude;

CLLocationDegrees longitude;

} CLLocationCoordinate2D;

*/

//中心位置

CLLocationCoordinate2Dcenter=CLLocationCoordinate2DMake(31.22,121.30);

//偏移值

/*

typedef struct

{

CLLocationDegrees latitudeDelta;

CLLocationDegrees longitudeDelta;

} MKCoordinateSpan;

*/

//比例尺

MKCoordinateSpanspan=MKCoordinateSpanMake(0.01,0.01);

//区域

/*

typedef struct

{

CLLocationCoordinate2D center;

MKCoordinateSpan span;

} MKCoordinateRegion;

*/

MKCoordinateRegionregion=MKCoordinateRegionMake(center, span);

// _map.region=region;

[_mapsetRegion:regionanimated:YES];

//设置代理

_map.delegate=self;

[self.viewaddSubview:_map];

//添加一个手势,长按添加一个大头针,在实际项目中,需要去请求一个接口,返回的数据对象中会包含每个对象的经纬度信息,然后根据经纬度去显示一个大头针。

UILongPressGestureRecognizer*lp=[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(addFlag:)];

lp.minimumPressDuration=1.0;

[_mapaddGestureRecognizer:lp];

}

-(void)addFlag:(UILongPressGestureRecognizer*)sender

{

//获取长按的位置

CGPointp=[senderlocationInView:_map];

//在地图上的坐标转换成经纬度

CLLocationCoordinate2Dcoor=[_mapconvertPoint:ptoCoordinateFromView:_map];

//添加大头针

MKPointAnnotation*anno=[[MKPointAnnotationalloc]init];

//设置经纬度

anno.coordinate=coor;

//标题

anno.title=@”四平路”;

anno.subtitle=@”同济大学”;

//添加到map上

[_mapaddAnnotation:anno];

}

#pragma mark-map代理方法

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

{

//重用id

staticNSString*annoID=@”annoID”;

//从重用队列获取

MKAnnotationView*annoView=[mapViewdequeueReusableAnnotationViewWithIdentifier:annoID];

if(annoView==nil)

annoView=[[MKPinAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:annoID];

//设置属性

annoView.canShowCallout=YES;

//在左边显示图片

UIImageView*imv=[[UIImageViewalloc]initWithFrame:CGRectMake(10,10,30,30)];

imv.image=[UIImageimageNamed:@”blue.png”];

annoView.leftCalloutAccessoryView=imv;

//右边显示一个按钮

UIButton*btn=[UIButtonbuttonWithType:UIButtonTypeDetailDisclosure];

annoView.rightCalloutAccessoryView=btn;

/*

lefCalloutAccessoryView和rightCalloutAccessoryView至少有一个时UIControl及其的子类才能点击响应相应的方法。

*/

returnannoView;

}

//点击大头针弹出视图的响应方法

-(void)mapView:(MKMapView*)mapView annotationView:(MKAnnotationView*)view calloutAccessoryControlTapped:(UIControl*)control

{

NSLog(@”tapped”);

}

@end

    评论

    还没有任何评论,你来说两句吧

    发表评论

    浙ICP备16008686 -
    善始者实繁,克终者盖寡