地图绘画
首先要说明的是这两个类是完成划线的基础类.利用它们可以实现我们想要的效果
1.MKPolyline :用于地图上面划线的类
2.MKPolylineView:用于展示线的视图
下面是实现画一组坐标点之间的划线
#import <MapKit/MapKit.h>
//遵循代理协议<MKMapViewDelegate>
//地图对象
@property (nonatomic, strong) MKMapView *mapView;
//1
@property (nonatomic, strong) MKPolyline *routeLine;
//2
@property (nonatomic, strong) MKPolyline *routeLine;
//2
@property (nonatomic, strong) MKPolylineView *routeLineView;
//覆盖---就是绘画的直线
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if(overlay == self.routeLine) {
if(nil == self.routeLineView) {
self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine];
self.routeLineView.fillColor = [UIColor redColor];
self.routeLineView.strokeColor = [UIColor cyanColor];
self.routeLineView.lineWidth = 5;
}
return self.routeLineView;
}
return nil;
}
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
if(overlay == self.routeLine) {
if(nil == self.routeLineView) {
self.routeLineView = [[MKPolylineView alloc] initWithPolyline:self.routeLine];
self.routeLineView.fillColor = [UIColor redColor];
self.routeLineView.strokeColor = [UIColor cyanColor];
self.routeLineView.lineWidth = 5;
}
return self.routeLineView;
}
return nil;
}
#pragma mark ---开始绘画
//开始绘画
- (void)drawTestLine
{
//创建一个可变数组,用来存放CLLocation对象的所有数组
_array = [NSMutableArray array];
for (int i = 0; i < _pointArray.count; i ++) {
PictureImageModel *model = _pointArray[i];
#warning =========
//坐标
CLLocation *loca = [[CLLocation alloc] initWithLatitude:model.latitude longitude:model.longitude];
[_array addObject:loca];
}
//调用两点之间的连线
[self drawLineWithLocationArray:_array];
}
#warning ------
//绘画的数组
- (void)drawLineWithLocationArray:(NSArray *)locationArray
{
//获取传过来的数组的个数
NSInteger pointCount = [locationArray count];
//动态调整数组大小
CLLocationCoordinate2D *coordinateArray = (CLLocationCoordinate2D *)malloc(pointCount * sizeof(CLLocationCoordinate2D));
for (int i = 0; i < pointCount; ++i) {
CLLocation *location = [locationArray objectAtIndex:i];
coordinateArray[i] = [location coordinate];
}
self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:pointCount];
[self.mapView setVisibleMapRect:[self.routeLine boundingMapRect]];
[self.mapView addOverlay:self.routeLine];
free(coordinateArray);
coordinateArray = NULL;
}
//开始绘画
- (void)drawTestLine
{
//创建一个可变数组,用来存放CLLocation对象的所有数组
_array = [NSMutableArray array];
for (int i = 0; i < _pointArray.count; i ++) {
PictureImageModel *model = _pointArray[i];
#warning =========
//坐标
CLLocation *loca = [[CLLocation alloc] initWithLatitude:model.latitude longitude:model.longitude];
[_array addObject:loca];
}
//调用两点之间的连线
[self drawLineWithLocationArray:_array];
}
#warning ------
//绘画的数组
- (void)drawLineWithLocationArray:(NSArray *)locationArray
{
//获取传过来的数组的个数
NSInteger pointCount = [locationArray count];
//动态调整数组大小
CLLocationCoordinate2D *coordinateArray = (CLLocationCoordinate2D *)malloc(pointCount * sizeof(CLLocationCoordinate2D));
for (int i = 0; i < pointCount; ++i) {
CLLocation *location = [locationArray objectAtIndex:i];
coordinateArray[i] = [location coordinate];
}
self.routeLine = [MKPolyline polylineWithCoordinates:coordinateArray count:pointCount];
[self.mapView setVisibleMapRect:[self.routeLine boundingMapRect]];
[self.mapView addOverlay:self.routeLine];
free(coordinateArray);
coordinateArray = NULL;
}

浙公网安备 33010602011771号