从Calendar事件(EKCalendarItem / EKEvent)中检索位置lat / long(CLLocationCoordinate2d)

时间:2014-09-27 02:51:07

标签: calendar location ios8 ekevent cllocationcoordinate2d

EKCalendarItem的属性为“位置”,但它是NSString。 新的iOS8功能显示了一个很好的事件地图,因此CLLocationCoordinate2D必须附加EKCalendarItem,对吗? 我在哪里可以找到CLLocationCoordinate2D

2 个答案:

答案 0 :(得分:5)

这应该得到你需要的东西:

for (EKEvent *calEvent in self.allMyEvents) {

   EKStructuredLocation *location = (EKStructuredLocation *)[calEvent valueForKey:@"structuredLocation"];

   if (location) {

   }

}

答案 1 :(得分:0)

EKCalendarItem不包含任何CLLocationCoordinate2D属性location,如您在问题中提到的NSString

您可以使用location属性来获取坐标。您可以使用CoreLocation框架CLGeocoder从字符串中获取坐标。

您可以使用此代码。

 CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:locationString completionHandler:^(NSArray *placemarks, NSError *error) {
    if([placemarks count]) {
        CLPlacemark *placemark = [placemarks objectAtIndex:0];
        CLLocation *location = placemark.location;
        CLLocationCoordinate2D coordinate = location.coordinate;
        NSLog(@"coordinate = (%f, %f)", coordinate.latitude, coordinate.longitude);

    }
}];

此处locationString是从EKCalendarItem的位置属性中检索到的位置字符串。默认的iCal应用程序必须做类似的事情,希望这会对你有帮助。