iOS项目接入高德skd
2016-02-18 16:47
344 查看
前段时间做了个项目需要用到地图,虽然iOS有内置的地图API但是还是决定直接接入高德地图,实现标注视图的自定义。首先要按照文档接入高德sdk这没有什么好说的。
看代码。首先要创建地图
接下来是主要的创建标准视图,第一步要创建数据源:
然后要正式创建标注视图了:
HeadAnnotationVeiw继承自MAAnnotationView,有个初始化方法最好实现一下:
选中标注视图
添加标注视图会调用这个方法
更新位置信息
看代码。首先要创建地图
[MAMapServices sharedServices].apiKey = @"5071a08ef9f79377e5a929362aef916e"; _mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, naviHeight+statrHeight+personView.frame.size.height, Swidth, Sheight-naviHeight+statrHeight+personView.frame.size.height)]; _mapView.userTrackingMode = MAUserTrackingModeFollow; [self.view addSubview:_mapView];
接下来是主要的创建标准视图,第一步要创建数据源:
- (void)creatAnnotaionModel:(S2CGamedetailret *)gameModel { if (gameModel != nil) { NSMutableArray *mutableArry = [NSMutableArray array]; ... //标准视图创建 MAPointAnnotation *annotation = [[MAPointAnnotation alloc] init]; CLLocationCoordinate2D coorDinate = CLLocationCoordinate2DMake([[gameModel.players[i] valueForKey:@"latitude" ] doubleValue],[[gameModel.players[i] valueForKey:@"longitude" ] doubleValue]); annotation.coordinate = coorDinate; annotation.title = @"d"; [mutableArry addObject:annotation]; ... [mutableArry addObject:annotation]; //添加地图的标注视图数据源 [_mapView addAnnotations:mutableArry]; } }
然后要正式创建标注视图了:
//这里是部分代码,函数返回的就是标注视图了。HeadAnnotationVeiw是MAAnnotationView的一个子类 - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation { NSUInteger personRanking = 0; if ([annotation isKindOfClass:[MAPointAnnotation class]]) { static NSString *identy = @"annotation"; //先从复用池中取视图 HeadAnnotationVeiw *annotationView = (HeadAnnotationVeiw *)[mapView dequeueReusableAnnotationViewWithIdentifier:identy]; if (annotationView == nil) { annotationView = [[HeadAnnotationVeiw alloc] initWithAnnotation:annotation reuseIdentifier:identy]; } //判断是否是登陆者的标注视图 ... annotationView.faImage.imageURL = [NSURL URLWithString:detail.loginUserInfo.headImage]; //annotationView.selected = YES; //默认登陆者是处于选择状态的 annotationView.imageName = @"map_hover_bg"; annotationView.isPK = detail.loginUserInfo.pkIng; annotationView.personId = detail.loginUserInfo.id; .... } return annotationView; } return nil; }
HeadAnnotationVeiw继承自MAAnnotationView,有个初始化方法最好实现一下:
*/ - (id)initWithAnnotation:(id <MAAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier;
选中标注视图
//选中标注视图 - (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view { if ([view isKindOfClass:[HeadAnnotationVeiw class]]) { headView = (HeadAnnotationVeiw *)view; point = [headView.superview convertPoint:headView.frame.origin toView:self.view]; //获取标注视图在屏幕中的位置 //区分选中的视图可以使用经纬度 } }
添加标注视图会调用这个方法
- (void)mapView:(MAMapView *)mapView didAddAnnotationViews:(NSArray *)views { [_mapView showAnnotations:_mapView.annotations animated:YES]; }
更新位置信息
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation { static NSInteger i = 0; if (i >= 1) { return; } i ++; CLLocationCoordinate2D coorDinate = userLocation.coordinate; NSString *longitude = [NSString stringWithFormat:@"%f",coorDinate.longitude]; NSString *latitude = [NSString stringWithFormat:@"%f",coorDinate.latitude]; }
相关文章推荐
- iOS--kxmovie之FFmpeg编译和使用
- CYC-CocoaPods
- IOS自定义图片放右边的Button
- iOS 离屏渲染
- IOS 如何选择delegate、notification、KVO?
- iOS Blog
- iOS字体相关知识
- 高仿ios SwitchButton----(自认为仿的还不错)
- IOS设计模式之一(MVC模式,单例模式)
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- iOS 沙盒文件操作
- 超全!整理常用的iOS第三方资源(转)
- iOS提交遇到的新问题
- iOS 中 Touch ID得使用方法
- ios xmpp+openfire 群聊
- iOS 利用JSPatch 添加热补丁功能
- IOS中获取各个文件的目录路径的方法和NSFileManager类
- iOS调试技巧
- iOS文件操作的十个小功能
- iOS-定时器