ios百度地图开发之显示标注
来源:互联网 发布:juicy couture淘宝官网 编辑:程序博客网 时间:2024/05/28 04:53
MyAnnotation.h文件
#import <Foundation/Foundation.h>#import <BaiduMapAPI_Map/BMKPointAnnotation.h>@interface MyAnnotation : BMKPointAnnotation/** * 图标 */@property (nonatomic, copy) NSString *icon;@end
MyAnnotation.m文件
#import "MyAnnotation.h"@implementation MyAnnotation@end
MyAnnotationView.h文件
#import <BaiduMapAPI_Map/BMKMapView.h>#import <BaiduMapAPI_Map/BMKAnnotationView.h>@interface MyAnnotationView : BMKAnnotationView/** * 创建方法 * * @param mapView 地图 * * @return 大头针 */+ (instancetype)annotationViewWithMap:(BMKMapView *)mapView;@end
MyAnnotationView.m文件
#import "MyAnnotationView.h"#import "MyAnnotation.h"@implementation MyAnnotationView- (instancetype)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{ if (self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier]) { } return self;}+ (instancetype)annotationViewWithMap:(BMKMapView *)mapView{ static NSString *identifier = @"anno"; // 1.从缓存池中取 MyAnnotationView *annoView = (HXAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; // 2.如果缓存池中没有, 创建一个新的 if (annoView == nil) { annoView = [[MyAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:identifier]; } return annoView;}- (void)setAnnotation:(MyAnnotation *)annotation{ [super setAnnotation:annotation]; //设置图标 self.image = [UIImage imageNamed:@"icon_green"];}@end
之后在控制器文件中,首先要先从服务器获取数据,取到数据后,根据经纬度坐标,也就是一个个的Annotation显示到地图上.
//可以使用,anno是标注[_mapView addAnnotation:anno];//或者使用,annos是标注数组[_mapView addAnnotations:annos];
之后在调用BMKMapViewDelegate的方法;
#pragma mark -BMKMapViewDelegate- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation{ // 对用户当前的位置的大头针特殊处理 if ([annotation isKindOfClass:[HXAnnotation class]] == NO) { return nil; } // 创建大头针 MyAnnotationView *annoView = [MyAnnotationView annotationViewWithMap:mapView]; // 设置模型 annoView.annotation = annotation; self.anno = annotation; //初始化泡泡视图 DetailsView *detailView = [[[NSBundle mainBundle]loadNibNamed:@"HXDetailsView" owner:nil options:nil] lastObject]; //显示到paopaoView上 annoView.paopaoView = [[BMKActionPaopaoView alloc] initWithCustomView:detailView]; // 返回大头针 return annoView;}
才能将annoView显示到地图上.
如果是自定义的paopaoView,BMKMapViewDelegate会有如下方法:
-(void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view;
我在开发过程中,调用上面的方法并没有作用,所以我在自定义的paopaoView里添加了一个按钮,盖满整个paopaoView,之后添加一个按钮的点击事件,以此来响应泡泡的点击,但是如果有很多的标注,需要最点击的泡泡遍历,否则则不能知道点击的是哪个泡泡.
我根据从服务器获取的数据,服务器返回了有关标注的ID,把这个ID设置为paopaoView上按钮的tag值,然后根据按钮tag值来判断点击的是哪个paopaoView.如下代码:
#pragma mark paopao按钮点击- (void)detailBtnClick:(UIButton *)button{ //self.annotations是标注数组 for (int i = 0; i < self.annotations.count; i++) { HXMenDList *menDList = self.annotations[i]; if (button.tag == [menDList.shopId integerValue]) { HXDetailsController *detailsV = [[HXDetailsController alloc] init]; detailsV.menDList = menDList; detailsV.coordinate = self.userLocation.location.coordinate; [self.navigationController pushViewController:detailsV animated:YES]; } }}
0 0
- ios百度地图开发之显示标注
- iOS开发之地图标注开发
- iOS开发之百度地图的简单集成——标注&POI检索
- 关于iOS百度地图标注
- 百度地图之标注聚会
- 百度地图之循环标注
- AndroidStudio百度地图开发之显示地图
- ios开发 地图上显示大头针和标注简单教程
- IOS百度地图开发系列-百度地图不能正常显示
- IOS百度地图开发系列-百度地图不能正常显示
- IOS百度地图开发系列-百度地图不能正常显示
- 详解百度地图API之地图标注
- 百度地图API详解之地图标注
- 百度地图API详解之地图标注
- 百度地图API详解之地图标注
- [Android]百度地图之地图标注
- 百度地图根据可视区域显示标注
- 百度地图显示多个标注点
- 【jQuery】prev + next选择器
- Unity常见问题集(待续)
- 就这么 来ADO.net类操作数据库
- BigDecimal Java中最好用的保留小数点的方法
- Hibernate 性能优化
- ios百度地图开发之显示标注
- java web导出文件
- 【jQuery】prev ~ siblings选择器
- java集合——映射表+专用集合映射表类
- iOS代码启动的步骤包含UINavigationController
- 菜鸟学习中-html:form/html:select
- 将树形菜单拼接为名称+路径
- gdb 调试PHP
- 【Linux学习篇】The Windows connection Linux question