从日历事件(EKCalendarItem/EKEvent)检索纬度/经度位置(CLLocationCoordinate2



EKCalendarItem具有属性"Location",但它是NSString。新的iOS8功能为事件显示了一个很好的映射,所以EKCalendarItem必须附加一个CLLocationCoordinate2D,对吗?我在哪里可以找到这个CLLocationCoordinate2D

这应该会得到你需要的:

for (EKEvent *calEvent in self.allMyEvents) {
   EKStructuredLocation *location = (EKStructuredLocation *)[calEvent valueForKey:@"structuredLocation"];
   if (location) {
   }
}

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应用程序必须做类似的事情,希望这能帮助你。

相关内容

最新更新