導(dǎo)航的常用三種實現(xiàn)方案
- 1.可以將需要導(dǎo)航的位置丟給系統(tǒng)的地圖APP進(jìn)行導(dǎo)航
- 2.發(fā)送網(wǎng)絡(luò)請求到公司服務(wù)器獲取導(dǎo)航數(shù)據(jù), 然后自己手動繪制導(dǎo)航
- 3.利用三方SDK實現(xiàn)導(dǎo)航(百度)
利用系統(tǒng)App導(dǎo)航
- [MKMapItem openMapsWithItems:items launchOptions:md];
#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()
/** 地理編碼 */
@property (nonatomic, strong) CLGeocoder *geoC;
@end
@implementation ViewController
#pragma mark -懶加載
-(CLGeocoder *)geoC
{
if (!_geoC) {
_geoC = [[CLGeocoder alloc] init];
}
return _geoC;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[self.geoC geocodeAddressString:@"廣州" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
// 廣州地標(biāo)
CLPlacemark *gzPL = [placemarks firstObject];
[self.geoC geocodeAddressString:@"上海" completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
// 上海地標(biāo)
CLPlacemark *shPL = [placemarks firstObject];
[self systemNavWithBeginPL:gzPL endPL:shPL];
}];
}];
}
/**
* 根據(jù)起點和終點地標(biāo)對象,調(diào)用系統(tǒng)APP進(jìn)行導(dǎo)航
*
* @param beginCLPL 起點地標(biāo)
* @param endCLPL 終點地標(biāo)
*/
-(void)systemNavWithBeginPL:(CLPlacemark *)beginCLPL endPL : (CLPlacemark *)endCLPL
{
// 調(diào)用系統(tǒng)的APP進(jìn)行導(dǎo)航
// 地圖起點地標(biāo)對象
MKPlacemark *beginPL = [[MKPlacemark alloc] initWithPlacemark:beginCLPL];
// 起點
MKMapItem *beginItem = [[MKMapItem alloc] initWithPlacemark:beginPL];
// 地圖終點地標(biāo)對象
MKPlacemark *endPL = [[MKPlacemark alloc] initWithPlacemark:endCLPL];
// 終點
MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endPL];
// 起點和終點數(shù)組
NSArray *items = @[beginItem, endItem];
// 設(shè)置地圖啟動項(導(dǎo)航模式:駕駛, 地圖類型: 混合, 是否顯示交通: 是)
NSDictionary *dic = @{
MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsMapTypeKey : @(MKMapTypeHybrid),
MKLaunchOptionsShowsTrafficKey : @(YES)
};
// 給定兩個點,起點和終點, 然后設(shè)置啟動項, 開始調(diào)用系統(tǒng)APP進(jìn)行導(dǎo)航
[MKMapItem openMapsWithItems:items launchOptions:dic];
}
@end
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者