iOS开发第三方工具——如何调用百度地图API
2013-06-28 15:58
603 查看
BaiduMapKit for ios 下载
一、路线搜索
IOS开发之百度地图API应用
二、调用百度地图的导航
//latitude-纬度 longitude-经度
NSString *stringURL = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=driving",self.myCoordinate.latitude,self.myCoordinate.longitude,
self.sellerCoordinate.latitude,self.sellerCoordinate.longitude];
NSURL *url = [NSURL URLWithString:stringURL];
if (![[UIApplication sharedApplication] openURL:url]) {
MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
hud.labelText = @"本机没有安装百度地图";
[hud hide:YES afterDelay:0.5];
}
三、注意细节
1. self.mapView.showsUserLocation = YES;//放在ViewDidLoad方法里一般不起作用,原因是mapView在Load的时候需要一段时间。设置该参数的意思是马上启动定位回调功能,并在地图上把自己的位置标注出来,正确的做法是放到ViewDidAppear方法里,如下代码:
另外还要注意两点:(1)设置showsUserLocation=YES后,mapView并不会自己移动好合适的位置,需要自己写代码来移动。
(2)设置showsUserLocation=YES后,会一直不停的回调didUpdateUserLocation方法,如果想关闭定位功能,只需设置didUpdateUserLocation=NO即可。
2. 改变搜索线路的颜色
3. onGetDrivingRouteResult和onGetWalkingRouteResult方法里的业务逻辑一样的
4. 计算任意两个经纬度之间的距离(详细讲解根据两点经纬度计算距离)
一、路线搜索
IOS开发之百度地图API应用
二、调用百度地图的导航
//latitude-纬度 longitude-经度
NSString *stringURL = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=driving",self.myCoordinate.latitude,self.myCoordinate.longitude,
self.sellerCoordinate.latitude,self.sellerCoordinate.longitude];
NSURL *url = [NSURL URLWithString:stringURL];
if (![[UIApplication sharedApplication] openURL:url]) {
MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
hud.labelText = @"本机没有安装百度地图";
[hud hide:YES afterDelay:0.5];
}
三、注意细节
1. self.mapView.showsUserLocation = YES;//放在ViewDidLoad方法里一般不起作用,原因是mapView在Load的时候需要一段时间。设置该参数的意思是马上启动定位回调功能,并在地图上把自己的位置标注出来,正确的做法是放到ViewDidAppear方法里,如下代码:
- (void)viewDidAppear:(BOOL)animated{ self.mapView.showsUserLocation = YES; [super viewDidAppear:animated]; }
另外还要注意两点:(1)设置showsUserLocation=YES后,mapView并不会自己移动好合适的位置,需要自己写代码来移动。
//放一个Annotation RouteAnnotation* item = [[RouteAnnotation alloc]init]; item.coordinate = self.myCoordinate;// 我的经纬度信息 item.title = @"我的位置"; item.type = 1; [_mapView addAnnotation:item]; // 添加起点标注 //移动地图的大小,把自己的位置放在mapView的中心点 BMKCoordinateSpan span = BMKCoordinateSpanMake(0.01, 0.01); BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(self.myCoordinate,span);//以自己的位置为中心 [self.mapView setRegion:[self.mapView regionThatFits:viewRegion] animated:NO];
(2)设置showsUserLocation=YES后,会一直不停的回调didUpdateUserLocation方法,如果想关闭定位功能,只需设置didUpdateUserLocation=NO即可。
2. 改变搜索线路的颜色
- (BMKOverlayView*)mapView:(BMKMapView *)map viewForOverlay:(id<BMKOverlay>)overlay{ HRLOG(@"- (void)mapView:viewForOverlay:->param:%@,%@", map, overlay); if ([overlay isKindOfClass:[BMKPolyline class]]) { BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay]; polylineView.fillColor = BMKPOLYLINE_FILL_COLOR; //填充颜色 polylineView.strokeColor = BMKPOLYLINE_STROKE_COLOR;//画笔颜色 polylineView.lineWidth = 3.0;//线条宽度 return polylineView; } return nil; }
3. onGetDrivingRouteResult和onGetWalkingRouteResult方法里的业务逻辑一样的
4. 计算任意两个经纬度之间的距离(详细讲解根据两点经纬度计算距离)
//计算两个经纬度之间的距离 double GetDistance(double lat1, double lng1, double lat2, double lng2){ double EARTH_RADIUS = 6378.137; double radLat1 = (lat1 * M_PI) / 180.0; double radLat2 = (lat2 * M_PI) / 180.0; double a = radLat1 - radLat2; double b = (lng1 * M_PI) / 180.0 - (lng2 * M_PI) / 180.0 ; double s = 2 * sin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2))); s = s * EARTH_RADIUS; s = round(s * 10000) / 10000; return s; }
相关文章推荐
- iOS开发实用技巧——如何调用第三方APP
- 如何使用开发工具C#.net来调用QC的接口
- iOS开发第三方工具——SSToolkit
- iOS开发swift如何调用系统相册和相机获取图片设置用户头像
- 现在跨平台开发(手机平台,主要是Android、iOS以及WP)工具或者技术都有哪些?有哪些优缺点和发展前景如何?
- 【iOS开发-13】大神器:如何利用cocoapods使用第三方类库,以针对UISwitch的第三方类库为例
- 如何在ASP.NET中调用第三方开发的控件?
- lae界面开发工具入门之介绍十二--<iOS系统如何编译打包?>
- IOS开发第三方工具整合与比较
- iOS开发-从app跳转到第三方应用和调用系统功能
- iOS开发—调用第三方地图导航
- Facebook发布的iOS开发调试工具“Tweaks”的使用体验如何?
- iOS开发的第三方库管理工具cocoapods
- iOS开发使用cocoapods导入第三方工具
- ios开发中如何调用苹果自带地图导航
- 【iOS开发-2】Info.plist文件的初步窥探:如何增减配置以及如何用代码调用里面的值
- ios开发中如何调用苹果自带地图导航
- IOS团队开发之——CocoaPods 第三方库管理工具