20170407173754342.png
1.调用百度地图 baidumap
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]) {
BMKPlanNode *start = [[BMKPlanNode alloc]init];
start.name = handleHelper.address;
start.pt = CLLocationCoordinate2DMake(weakSelf.locService.userLocation.location.coordinate.latitude, weakSelf.locService.userLocation.location.coordinate.longitude);
BMKPlanNode *end = [[BMKPlanNode alloc]init];
end.name = weakSelf.model.address;
end.pt = CLLocationCoordinate2DMake([weakSelf.model.latitude doubleValue], [weakSelf.model.longitude doubleValue]);
BMKOpenDrivingRouteOption *driveOpt = [[BMKOpenDrivingRouteOption alloc]init];
driveOpt.appScheme = @"baidumapsdk://mapsdk.baidu.com";
driveOpt.startPoint = start;
driveOpt.endPoint = end;
BMKOpenWalkingRouteOption *opt = [[BMKOpenWalkingRouteOption alloc]init];
opt.appScheme = @"baidumapsdk://mapsdk.baidu.com";
opt.startPoint = start;
opt.endPoint = end;
double distanceKM = [weakSelf distanceTwoPoint1:CLLocationCoordinate2DMake(handleHelper.latitude, handleHelper.longtitude)Point2:CLLocationCoordinate2DMake([_model.latitude doubleValue],[_model.longitude doubleValue])];
if (distanceKM >= 3000.0) {
[BMKOpenRoute openBaiduMapDrivingRoute:driveOpt];
}
else
{
[BMKOpenRoute openBaiduMapWalkingRoute:opt];
}
}
else
{
[Tool MBProgressHUDWithTitle:@"没安装百度地图" OffsetY:kScreenWidth / 3 DelayTime:1.0f];
}
注意:经纬度不能传错,longitude经度,latitude纬度;传错的话百度地图会提醒,服务异常请稍后重试.
2.调用高德地图 iosamap
(1)第一种方式:
AMapRouteConfig *config = [AMapRouteConfig new];
config.appName = [self getApplicationName];
config.appScheme = [self getApplicationScheme];
config.startCoordinate = AMapCoordinateConvert( CLLocationCoordinate2DMake(_locService.userLocation.location.coordinate.latitude, _locService.userLocation.location.coordinate.longitude), AMapCoordinateTypeBaidu);
config.destinationCoordinate = AMapCoordinateConvert(CLLocationCoordinate2DMake([_model.latitude doubleValue], [_model.longitude doubleValue]), AMapCoordinateTypeBaidu); //百度sdk里边有百度坐标转高德坐标
config.routeType = AMapRouteSearchTypeWalking;
if (![AMapURLSearch openAMapRouteSearch:config]) {
[Tool MBProgressHUDWithTitle:@"没安装高德地图" OffsetY:kScreenWidth / 3 DelayTime:1.0f];
}
(2)第二种方式
// m 驾车:0:速度最快,1:费用最少,2:距离最短,3:不走高速,4:躲避拥堵,5:不走高速且避免收费,6:不走高速且躲避拥堵,7:躲避收费和拥堵,8:不走高速躲避收费和拥堵 公交:0:最快捷,2:最少换乘,3:最少步行,5:不乘地铁 ,7:只坐地铁 ,8:时间短 是
// t = 0:驾车 =1:公交 =2:步行
NSString *url = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=applicationName&sid=BGVIS1&slat=%f&slon=%f&sname=%@&did=BGVIS2&dlat=%f&dlon=%f&dname=%@&dev=0&m=0&t=0",_locService.userLocation.location.coordinate.latitude, _locService.userLocation.location.coordinate.longitude, handleHelper.address, [_model.latitude doubleValue], [_model.longitude doubleValue],_model.address] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if ([[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
else
{
[Tool MBProgressHUDWithTitle:@"没安装高德地图" OffsetY:kScreenWidth / 3 DelayTime:1.0f];
}
3.调用腾讯地图 qqmap
-(void)openQMap
{
CLLocationCoordinate2D start = AMapCoordinateConvert(_locService.userLocation.location.coordinate, AMapCoordinateTypeBaidu);
CLLocationCoordinate2D end = AMapCoordinateConvert(CLLocationCoordinate2DMake(self.coordinateY.floatValue, self.coordinateX.floatValue), AMapCoordinateTypeBaidu);
NSString *url = [[NSString stringWithFormat:@"qqmap://map/routeplan?type=drive&from=%@&fromcoord=%f,%f&to=%@&tocoord=%f,%f&policy=0referer=Casing",self.startName,start.latitude,start.longitude,self.destinationName,end.latitude,end.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"qqmap://"]]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url] options:@{} completionHandler:nil];
}
}
4.调用苹果地图
-(void)openAppleMap
{
MKPlacemark *startMark = [[MKPlacemark alloc]initWithCoordinate:_locService.userLocation.location.coordinate];
MKMapItem *startItem = [[MKMapItem alloc]initWithPlacemark:startMark];
startItem.name = self.startName;
MKPlacemark *endMark = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(self.coordinateY.floatValue, self.coordinateX.floatValue)];
MKMapItem *endItem = [[MKMapItem alloc]initWithPlacemark:endMark];
endItem.name = self.destinationName;
NSDictionary *options = @{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsMapTypeKey:[NSNumber numberWithInteger:MKMapTypeStandard],MKLaunchOptionsShowsTrafficKey:@YES};
[MKMapItem openMapsWithItems:@[startItem,endItem] launchOptions:options];
}
网友评论