百度地图步行箭头和路线一致
2016-04-18 13:23
459 查看
最近又重新再过一遍百度地图的相关东西,之前有一些细节没有注意到,其中有一个路线规划的步行中,把大头针设置成一个箭头,然后这个箭头的方向与路线方向一致,这个就需要自己来写一下。
1 把大头针设置成箭头图片
在实现BMKMapView的Delegate中实现如下方法,然后自定义一个getRouteAnnotation函数。
2 自定义的getRouteAnnotationView
3 进行箭头和路线的调整
这样,就实现了如图所示的效果
1 把大头针设置成箭头图片
在实现BMKMapView的Delegate中实现如下方法,然后自定义一个getRouteAnnotation函数。
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation { if ([annotation isKindOfClass:[RouteAnnotation class]]) { return [self getRouteAnnotationView:mapView viewForAnnotation:(RouteAnnotation *)annotation]; } return nil; }
2 自定义的getRouteAnnotationView
- (BMKAnnotationView *)getRouteAnnotationView:(BMKMapView *)mapView viewForAnnotation:(RouteAnnotation *)routeAnnotation { view = [mapView dequeueReusableAnnotationViewWithIdentifier:@"route_node"]; if (view == nil) { view = [[BMKAnnotationView alloc]initWithAnnotation:routeAnnotation reuseIdentifier:@"route_node"]; view.canShowCallout = TRUE; } else { [view setNeedsDisplay]; } UIImage* image = [UIImage imageWithContentsOfFile:[self getMyBundlePath:@"images/icon_direction.png"]]; view.image = [image imageRotatedByDegrees:routeAnnotation.degree]; view.annotation = routeAnnotation; }
3 进行箭头和路线的调整
- (UIImage*)imageRotatedByDegrees:(CGFloat)degrees { CGFloat width = CGImageGetWidth(self.CGImage); CGFloat height = CGImageGetHeight(self.CGImage); CGSize rotatedSize; rotatedSize.width = width; rotatedSize.height = height; UIGraphicsBeginImageContext(rotatedSize); CGContextRef bitmap = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(bitmap, rotatedSize.width/2, rotatedSize.height/2); CGContextRotateCTM(bitmap, degrees * M_PI / 180); CGContextRotateCTM(bitmap, M_PI); CGContextScaleCTM(bitmap, -1.0, 1.0); CGContextDrawImage(bitmap, CGRectMake(-rotatedSize.width/2, -rotatedSize.height/2, rotatedSize.width, rotatedSize.height), self.CGImage); UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; }
这样,就实现了如图所示的效果
相关文章推荐
- aodh M版本新特性 - Remove eventlet from Aodh in favour of threaded approach
- OmniGraffle汉化破解版
- ngrok原理浅析
- 快速解决光标由竖线变黑块
- 【LeetCode】104. Maximum Depth of Binary Tree 求解二叉树最大深度
- 使用Mockito进行java单元测试
- SAP保存操作记录CDHDR和CDPOS表
- Android studio切换分支
- LinkedList基本用法
- static小解
- 关于C++构造函数一二
- 聊天(蘑菇街)-Java
- android adb, retrieve database using run-as
- 关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 可以无限循环,自动旋转,停靠的3D旋转布局控件
- 通过CDHDR CDPOS获取增量数据
- 详解可变参数列表
- 个人开发安卓遇到的一些问题收集【仅解决个人问题】
- Android 之 Drawable