IOS/MapKit: запустите приложение Native Map, нажав MKPlacemark
IOS newb только изучает Mapkit. Я загружаю карту в свое приложение, используя MKPlacemark. Однако некоторые пользователи могут захотеть использовать более продвинутые функции, такие как маршруты проезда, и для этого, я думаю, им лучше запустить собственное приложение поверх моего (с моим приложением, все еще открытым в фоновом режиме, когда они заканчивают с обычной картой). приложение)
Я знаю, как запустить собственное приложение из моего приложения, используя MKMapItem. Однако есть способ запустить нативное приложение только после того, как пользователь коснется метки места.
Вот код, который я использую.
-(void) geoCodeAndMapIt {
NSString* location = @"156 University Ave, Palo Alto, CA 94301";
NSLog(@"going to map this address: %@",location);
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:location
completionHandler:^(NSArray* placemarks, NSError* error){
if (placemarks && placemarks.count > 0) {
CLPlacemark *topResult = [placemarks objectAtIndex:0];
MKPlacemark *placemark = [[MKPlacemark alloc]
initWithPlacemark:topResult];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(placemark.coordinate, 5000, 5000);//5000 is meters
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:placemark];
// The following MKMapItem class launches the full blown native app. Commenting it out causes the map to load in the app. Otherwise, it fires up the native map app immediately in place of the previous app.
MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:placemark];
mapItem.name = self.contact.first;
mapItem.phoneNumber = self.contact.tel;
NSDictionary *options = @{
MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsMapTypeKey:
[NSNumber numberWithInteger:MKMapTypeSatellite],
MKLaunchOptionsShowsTrafficKey:@YES
};
[mapItem setName:@"Name of your location"];
[mapItem openInMapsWithLaunchOptions:options];*/
}
}
];
[mapItem openInMapsWithLaunchOptions:options];
}
Спасибо за любые предложения.
1 ответ
Вы должны вызывать openInMaps только тогда, когда MKMapViewDelegate вызывается для didSelectAnnotation: для примера.
Чтобы открыть приложение "Карты", вы также можете самостоятельно создать URL-адрес с помощью следующего:
UIApplication.sharedApplication (). OpenUrl (...)
Проверьте эту документацию здесь для отдыха: