- 問題:
如下圖所示栅屏,在設計的時候在地圖上添加標志,但是點擊的效果是跳轉(zhuǎn)耸彪,而不是顯示泡泡動畫伞芹,或者顯示泡泡動畫之后點擊泡泡動畫跳轉(zhuǎn)
分析需求:
1、往地圖上添加自定義標志物
2蝉娜、標志物顯示數(shù)據(jù)
3唱较、點擊標志物不能顯示泡泡,但是能實現(xiàn)其他的操作分布操作
1召川、通過子類化<b>BMKAnnotationView</b>并重載<b>-initWithAnnotation:reuseIdentifier</b>將一個自定義的label添加自定義視圖上南缓,因為不能看是泡泡所以需要設置屬性canShowCallout為No
- (id)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self) {
self.backgroundColor = [UIColor clearColor];
self.image = [UIImage imageNamed:@"map_Animate"];
_countLbl = [[UILabel alloc] initWithFrame:CGRectMake(5, 10, 30, 20)];
_countLbl.textAlignment = NSTextAlignmentCenter;
_countLbl.font = [UIFont systemFontOfSize:12];
_countLbl.textColor = [UIColor whiteColor];
_countLbl.backgroundColor = [UIColor clearColor];
_countLbl.userInteractionEnabled = NO;
[self addSubview:_countLbl];
self.canShowCallout = NO;
}
return self;
}
2、子類化BMKPointAnnotation荧呐,并添加屬性id
/*
*自定義Annotation
*/
@interface CustomeAnnotation : BMKPointAnnotation
@property (nonatomic, assign) NSUInteger releatedId;
@end
3汉形、添加CustomeAnnotation的實例到mapview時,需要切記一定要設置title屬性倍阐,具體原因是概疆,如果不設置的話,
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view
此方法只會響應一次峰搪,title屬性只會影響到泡泡岔冀,而我們設置了泡泡不現(xiàn)實,所以無論title屬性設置為什么都不會影響到界面
4概耻、實現(xiàn)viewForAnnotation方法
5楣颠、實現(xiàn)didSelectAnnotationView方法咐蚯,在里面需要設置view.selected = NO
- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view{
view.selected = NO;
/**
一些其他的操作,如跳轉(zhuǎn)
**/
}
補充:
1期奔、開啟定位之后點擊定位會彈出“ 我的位置”的泡泡馁痴,如果要不顯示,可設置,userLocation.title= nil;