關(guān)于導(dǎo)入百度地圖SDK出現(xiàn)的問題(二)
1.百度地圖開發(fā)中添加標(biāo)注[_mapView addAnnotations:annotations]與[_mapView addAnnotation: annotation] 的不同
/**
*向地圖窗口添加標(biāo)注,需要實現(xiàn)BMKMapViewDelegate的-mapView:viewForAnnotation:函數(shù)來生成標(biāo)注對應(yīng)的View
*@param annotation 要添加的標(biāo)注
*/
- (void)addAnnotation:(id <BMKAnnotation>)annotation;
/**
*向地圖窗口添加一組標(biāo)注,需要實現(xiàn)BMKMapViewDelegate的-mapView:viewForAnnotation:函數(shù)來生成標(biāo)注對應(yīng)的View *@param annotations 要添加的標(biāo)注數(shù)組
*/
- (void)addAnnotations:(NSArray *)annotations;addAnnotation是每次添加一個標(biāo)注纠俭,之后在- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation;
中paopaoView的顯示內(nèi)容是不同的夕土,addAnnotation是添加一個標(biāo)注數(shù)組底瓣,之后(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation;
paopaoview顯示的內(nèi)容是數(shù)組最后一個元素的內(nèi)容斯议。
2.百度地圖api自定義paopaoView芒划,push到一個新的界面超埋,返回之后再點擊paopaoView不在有反應(yīng),解決辦法:
下面這兩個方法(void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views;
和
- (void)mapView:(BMKMapView*)mapView annotationViewForBubble:(BMKAnnotationView *)view;
不要使用洼畅, 在自定義的泡泡view里最上面覆蓋一個透明的按鈕吩案,之后在- (BMKAnnotationView )mapView:(BMKMapView)mapView viewForAnnotation:(id )annotation這個方法里初始化自定義的View,之后為view里的按鈕添加一個監(jiān)聽事件帝簇,為button設(shè)置tag值徘郭,之后在點擊方法里
//pragma mark paopao按鈕點擊
-(void)btnClick:(UIButton *)button{
for (int i = 0; i < self.annotations.count; i++) {
HXMenDList *menDList = self.annotations[i];
if (button.tag == [menDList.ID integerValue]) {
HXDetailsController *detailsV = [[HXDetailsController alloc] init];
detailsV.menDList = menDList; //計算所選坐標(biāo)和當(dāng)前位置之間的距離 CLLocationCoordinate2D
currentAnno = CLLocationCoordinate2DMake([menDList.weid doubleValue], [menDList.jind doubleValue]); BMKMapPoint mp1 =
BMKMapPointForCoordinate(currentAnno);
BMKMapPoint mp2 = BMKMapPointForCoordinate(self.userLocation.location.coordinate);
CLLocationDistance distance = BMKMetersBetweenMapPoints(mp1, mp2);
distance = [Tools formatDistance:distance];
menDList.distance = distance;
NSLog(@"detailsV.menDList.dianm==%@",detailsV.menDList.dianm);
[self.navigationController pushViewController:detailsV animated:YES];
}
}
}
就可以跳轉(zhuǎn)到對應(yīng)的界面了。
3.設(shè)置狀態(tài)欄為白色的方法
//pragma mark 設(shè)置狀態(tài)欄的為白色
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
//pragma mark 設(shè)置狀態(tài)欄的為白色
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
4.自定義導(dǎo)航欄側(cè)滑返回失效
-(void)viewDidLoad {
[super viewDidLoad];
__weak typeof (self) weakSelf = self;
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.delegate = weakSelf;
}
}
iOS7之后可以添加一個手勢,要設(shè)置代理UIGestureRecognizerDelegate
//支持右滑手勢
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7) {
self.navigationController.interactivePopGestureRecognizer.delegate=self;
}
5.BMKMapPoint * temppoints = new BMKMapPoint[planPointCounts]; ‘delete []temppoints;’報錯
解決辦法:new和delete是c++里的語法丧肴。要么把源文件后綴名改成.mm要么用c的malloc残揉。這其實是objc開發(fā)的問題了,不算百度SDK的問題芋浮。