美文网首页
App 跳轉內建 Map App

App 跳轉內建 Map App

作者: ShinrenPan | 来源:发表于2016-05-05 12:56 被阅读148次
    • 已知單一位置經緯度
    // 創建 coordinate
    CLLocationCoordinate2D coordinate =
    CLLocationCoordinate2DMake(latitude, longitude);
    
    // 創建 MKPlacemark
    MKPlacemark *placemark = [[MKPlacemark alloc]initWithCoordinate:coordinate
                                                  addressDictionary:nil];
    
    // 創建 MKMapItem
    MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
    mapItem.name = @"Target place";
    
    // 跳轉至 Map App
    [mapItem openInMapsWithLaunchOptions:nil];
    
    // 或是使用 Class method 替代
    // [MKMapItem openMapsWithItems:@[mapItem] launchOptions:nil];
    
    • 已知單一位置地址
    NSString *address    = @"403台中市西區健行路1049號";
    CLGeocoder *geocoder = [[CLGeocoder alloc]init];
    
    void (^handler)(NSArray *geoMarks, NSError *error) = ^(NSArray *geoMarks, NSError *error){
        CLPlacemark *geoMark    = geoMarks.firstObject;
        MKPlacemark *targetMark = [[MKPlacemark alloc]initWithPlacemark:geoMark];
        MKMapItem *targetItem   = [[MKMapItem alloc]initWithPlacemark:targetMark];
        
        [targetItem openInMapsWithLaunchOptions:nil];
    };
    
    [geocoder geocodeAddressString:address completionHandler:handler];
    
    • 兩點路徑規劃
    /** 這裡以 User 目前位置跟 Target 位置做規劃 */
    
    // 使用者目前位置
    MKMapItem *currentLocationMapItem = [MKMapItem mapItemForCurrentLocation];
    
    // Target 位置, 按照上兩個方式創建
     MKMapItem *targetItem = ......
    
    // 路徑方式, 這裡以開車做規劃
    NSDictionary *launchOptions = @{MKLaunchOptionsDirectionsModeKey : MKLaunchOptionsDirectionsModeDriving};
    
    // 跳轉至 Map App, 只能使用 Class method
    [MKMapItem openMapsWithItems:@[currentLocationMapItem, targetItem]
                   launchOptions:launchOptions];
    

    相关文章

      网友评论

          本文标题:App 跳轉內建 Map App

          本文链接:https://www.haomeiwen.com/subject/wmsdrttx.html