我正在开发iOS 5应用程序。
我想开发一个GPX解析器,但我想知道在我开始开发它之前是否有一个开发。
您知道是否有Objective-c GPX解析器吗?
答案 0 :(得分:4)
看看: http://terrabrowser.googlecode.com/svn/trunk/
在那里您可以找到GPSFileParser.m和GPSFileParser.h,它们可以为您提供帮助。
答案 1 :(得分:3)
我已经在gpx-api工作了一段时间。它将读取gpx文件并具有可用的数据模型(在我看来)。
答案 2 :(得分:1)
目前没有针对Obejective-C的特定GPX解析器。
这不是一个真正的问题,因为GPX只是XML,因此您可以使用任何XML解析器来处理GPX数据。有些例子,请查看Ray Wenderlich's tutorial on iOS XML parsers。
答案 3 :(得分:1)
我意识到这是一个老问题,但我刚刚开始使用这个GPX解析器:
https://github.com/patricks/gpx-parser-cocoa
是从这个分叉的:
https://github.com/fousa/gpx-parser-ios
以下是我正在使用的代码。假设您已经将一个IBOutlet(self.theMapView)连接到您的MKMapView,您已经设置了委托并将MapKit框架添加到您的目标,并且您已经获得了有效的gpx项目中的文件(称为 test-gpx.gpx )。我在Mac应用程序中使用它,但我认为代码也适用于iOS。
- (void)parseGPX {
NSString *gpxFilePath = [[NSBundle mainBundle] pathForResource:@"test-gpx" ofType:@"gpx"];
NSData *fileData = [NSData dataWithContentsOfFile:gpxFilePath];
[GPXParser parse:fileData completion:^(BOOL success, GPX *gpx) {
// success indicates completion
// gpx is the parsed file
if (success) {
NSLog(@"GPX success: %@", gpx);
NSLog(@"GPX filename: %@", gpx.filename);
NSLog(@"GPX waypoints: %@", gpx.waypoints);
NSLog(@"GPX routes: %@", gpx.routes);
NSLog(@"GPX tracks: %@", gpx.tracks);
[self.theMapView removeAnnotations:self.theMapView.annotations];
for (Waypoint *thisPoint in gpx.waypoints) {
// add this waypoint to the map
MKPointAnnotation *thisRecord = [[MKPointAnnotation alloc] init];
thisRecord.coordinate = thisPoint.coordinate;
thisRecord.title = thisPoint.name;
[self.theMapView addAnnotation:thisRecord];
}
for (Track *thisTrack in gpx.tracks) {
// add this track to the map
[self.theMapView addOverlay:thisTrack.path];
}
[self.theMapView setRegion:[self.theMapView regionThatFits:gpx.region] animated:YES];
} else {
NSLog(@"GPX fail for file: %@", gpxFilePath);
}
}];
}
- (MKOverlayRenderer*)mapView:(MKMapView*)mapView rendererForOverlay:(id <MKOverlay>)overlay {
MKPolylineRenderer* lineView = [[MKPolylineRenderer alloc] initWithPolyline:overlay];
lineView.strokeColor = [NSColor orangeColor];
lineView.lineWidth = 7;
return lineView;
}
下面@Dave Robertson提到的iOS GPX Framework看起来不错,所以我可能会在某些时候切换到那个。