您的位置:首页 > 移动开发 > IOS开发

[ios]MKMapView中使用MKPolyline画线

2015-08-05 15:42 627 查看
参考:http://blog.sina.com.cn/s/blog_9e8867eb0101dt76.html

首先在MapView.h中

#import <MapKit/MapKit.h>

@interface MapView : UIView<MKMapViewDelegate> {

MKMapView* mapView;

}

@property (nonatomic, retain) MKMapView* mapView;
-(void) drawline: (NSArray*)nowRoadArrary;
@end


在MapView.m 中

#import "MapView.h"

@implementation MapView

@synthesize mapView;
-(void) drawline: (NSArray*)nowRoadArrary
{
//  将array中的信息点转换成CLLocationCoordinate2D数组
CLLocationCoordinate2D coords[nowRoadArrary.count];

int i = 0;
for (NSDictionary *newDic in nowRoadArrary) {
CLLocationCoordinate2D annotationCoord;
id lat =  [newDic objectForKey:@"latitude"];
annotationCoord.latitude = [lat doubleValue];
annotationCoord.longitude = [[newDic objectForKey:@"longitude"] doubleValue];
coords[i] = annotationCoord;
i++;
}

//用MKPolyline画线并作为overlay添加进mapView
MKPolyline *cc = [MKPolyline polylineWithCoordinates:coords count:nowRoadArrary.count];
[mapView addOverlay:cc];
}

//完成MapView的delegate
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKPolyline class]])
{
      //如果有MKPloylineView的overlay,将其画出
MKPolylineView *lineview=[[MKPolylineView alloc] initWithOverlay:overlay] ;
//路线颜色
lineview.strokeColor=[UIColor colorWithRed:69.0f/255.0f green:212.0f/255.0f blue:255.0f/255.0f alpha:0.9];
lineview.lineWidth=8.0;
return lineview;
}
return nil;
}


调用MapView

- (void)viewDidLoad
{
//初始化
[super viewDidLoad];
MapView  *mapView = [[MapView alloc] initWithFrame:
CGRectMake(0, 244, self.view.frame.size.width,800)] ;
[self.view addSubview:mapView];

//调用
NSDictionary *myplace[4];

myplace[0] = [NSDictionary dictionaryWithObjectsAndKeys:
@"32.0816",@"latitude",
@"118.892",@"longitude",
nil];

myplace[1] = [NSDictionary dictionaryWithObjectsAndKeys:
@"32.0856",@"latitude",
@"118.892",@"longitude",
nil];
myplace[2] = [NSDictionary dictionaryWithObjectsAndKeys:
@"32.0716",@"latitude",
@"118.92",@"longitude",
nil];
myplace[3] = [NSDictionary dictionaryWithObjectsAndKeys:
@"32.0766",@"latitude",
@"118.982",@"longitude",
nil];

NSArray *ary = [[NSArray alloc]initWithObjects:myplace[0],myplace[1],myplace[2],myplace[3], nil];

[mapView drawline:ary];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: