我一共添加了四种Annotation:起点、终点、附近的人、定位蓝点 不同的Annotation需要用不同的标注图标。
定义PointAnnotation
#pragma mark - MAPointAnnotation
- (MAPointAnnotation *)startAnnotation
{
if (_startAnnotation == nil) {
_startAnnotation = [[MAPointAnnotation alloc] init];
_startAnnotation.title = @"起点";
}
return _startAnnotation;
}
- (MAPointAnnotation *)endAnnotation
{
if (_endAnnotation == nil) {
_endAnnotation = [[MAPointAnnotation alloc] init];
_endAnnotation.title = @"终点";
}
return _endAnnotation;
}
添加起点终点
self.startAnnotation.coordinate = self.currentLocation.coordinate;
[self.mapView addAnnotation:self.startAnnotation];
self.endAnnotation.coordinate = self.currentLocation.coordinate;
[self.mapView addAnnotation:self.endAnnotation];
回调是关键
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{
if ([annotation isKindOfClass:[MAUserLocation class]]) {//定位蓝点
return nil;
}
else if ([annotation isKindOfClass:[MAPointAnnotation class]])
{
static NSString *reuseIndetifier = @"annotationReuseIndetifier";
MAAnnotationView *annotationView = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
if (annotationView == nil)
{
annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation
reuseIdentifier:reuseIndetifier];
}
if(annotation == self.startAnnotation)
annotationView.image = [UIImage imageNamed:@"start.png"];
else if(annotation == self.endAnnotation)
annotationView.image = [UIImage imageNamed:@"end.png"];
else
annotationView.image = [UIImage imageNamed:@"poi.png"];
//设置中心点偏移,使得标注底部中间点成为经纬度对应点
annotationView.centerOffset = CGPointMake(0, -25);
annotationView.canShowCallout= YES; //设置气泡可以弹出,默认为NO
return annotationView;
}
return nil;
}
移除起点和终点
[self.mapView removeAnnotation:self.startAnnotation];
[self.mapView removeAnnotation:self.endAnnotation];